gpt4 book ai didi

java - 如何将复杂的Map序列化到磁盘?

转载 作者:行者123 更新时间:2023-12-02 01:36:56 24 4
gpt4 key购买 nike

我有一个使用 ConcurrentHashMap 的简单内存缓存。我希望该缓存能够在重新启动后继续存在。意味着,在关闭时我想将内容写入本地磁盘。在应用程序启动时,我想将本地内容读入缓存映射。

我不需要在本地磁盘缓存上进行任何查询。

//simple key-value store
private final Map<String, Wrapper> cache = new ConcurrentHashMap<>();

public static class Wrapper {
public List<Transaction> transactions;
public LocalDateTime timestamp;

public static class Transaction {
public String request;
public String response;
}
}

问题:您能否建议一个现有的库,可以简单地将如此复杂的 Map 写入/读取到本地文件?

我考虑过将整个内容序列化为 json 对象,但由于我需要在应用程序重新启动时读取该缓存,因此性能很重要。使用 json 可能不是最好的。

最佳答案

您可以编写自己的方法来序列化和反序列化对象。注意 FileUtils 的使用来自Commons IO用于写入文件和从文件读取的库。

public void serializeAndWriteToFile(Object o) {
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(o);
FileUtils.writeByteArrayToFile(new File("D:\\Test.txt"), baos.toByteArray());
} catch (IOException ioe) {
// Handle exception
}
}

public void readFromFileAndDeserialize() {
try {
ByteArrayInputStream bais = new ByteArrayInputStream(FileUtils.readFileoByteArray(new File("D:\\Test.txt")));
ObjectInutStream ois = ne ObjectInutStream(bais);
Object o = ois.readObject();
// Type cast o to your object before using it
} catch (IOException | ClassNotFoundException e) {
// Handle exception
}
}

关于java - 如何将复杂的Map序列化到磁盘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55102400/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com