21条回答 默认 最新
- Kwan的解忧杂货铺@新空间代码工作室 2024-03-18 18:50关注
cxpxatu521 晚上好🌙🌙🌙
本答案参考ChatGPT-3.5如果Java程序没有权限将数据写入文件,可以考虑以下方法来实现数据的持久化和存储,同时确保在程序重启后依然可以访问到这些数据:
- 使用数据库: 可以使用内存数据库,如H2或HSQLDB,它们可以嵌入到应用程序中,不需要额外的数据库服务器。通过使用数据库,你可以将数据存储在内存中,而不是磁盘上的文件中。
// 使用H2内存数据库的示例代码 import java.sql.*; public class PersistenceExample { public static void main(String[] args) { Connection conn = null; try { // 加载数据库驱动 Class.forName("org.h2.Driver"); // 创建数据库连接 conn = DriverManager.getConnection("jdbc:h2:mem:test", "user", "password"); // 创建表 Statement stmt = conn.createStatement(); stmt.executeUpdate("CREATE TABLE IF NOT EXISTS data (id INT PRIMARY KEY, value VARCHAR(255))"); // 插入数据 stmt.executeUpdate("INSERT INTO data VALUES (1, 'Hello World')"); // 查询数据 ResultSet rs = stmt.executeQuery("SELECT * FROM data"); while (rs.next()) { System.out.println(rs.getInt("id") + " " + rs.getString("value")); } } catch (Exception e) { e.printStackTrace(); } finally { // 关闭数据库连接 if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } }
- 使用序列化和反序列化: 如果没有权限访问磁盘,你可以将数据序列化为字节数组,并存储在内存中。在程序重启时,再将字节数组反序列化为对象恢复数据。
import java.io.*; public class PersistenceExample { public static void main(String[] args) { // 将对象写入内存 ByteArrayOutputStream bos = new ByteArrayOutputStream(); try { ObjectOutputStream oos = new ObjectOutputStream(bos); MyData data = new MyData(); data.setValue("Hello World"); oos.writeObject(data); oos.flush(); } catch (IOException e) { e.printStackTrace(); } // 从内存中读取对象 ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray()); try { ObjectInputStream ois = new ObjectInputStream(bis); MyData restoredData = (MyData) ois.readObject(); System.out.println(restoredData.getValue()); } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); } } // 需要序列化和反序列化的数据类 private static class MyData implements Serializable { private String value; public String getValue() { return value; } public void setValue(String value) { this.value = value; } } }
- 使用缓存: 如果数据量不大且可以接受一些性能损失,可以使用内存缓存来存储数据。当程序重启时,可以将缓存中的数据重新加载到内存中。
import java.util.HashMap; import java.util.Map; public class PersistenceExample { private static Map<Integer, String> cache = new HashMap<>(); public static void main(String[] args) { // 将数据写入缓存 cache.put(1, "Hello World"); // 从缓存中读取数据 String value = cache.get(1); System.out.println(value); } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 - 使用数据库: 可以使用内存数据库,如H2或HSQLDB,它们可以嵌入到应用程序中,不需要额外的数据库服务器。通过使用数据库,你可以将数据存储在内存中,而不是磁盘上的文件中。
悬赏问题
- ¥20 python忆阻器数字识别
- ¥15 无法输出helloworld
- ¥15 高通uboot 打印ubi init err 22
- ¥20 PDF元数据中的XMP媒体管理属性
- ¥15 R语言中lasso回归报错
- ¥15 网站突然不能访问了,上午还好好的
- ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
- ¥15 semrush,SEO,内嵌网站,api
- ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
- ¥15 振荡电路,ADS仿真