缓存实现,实现二级的正确方法(文件系统)

时间:2013-08-15 11:44:35

标签: java caching

我正在处理我的2级缓存实现的第二级。 我正在考虑使用标准Java序列化机制(Serializable)的序列化对象选项,因为此功能包含在JDK中。我所知道的关于输入对象的是他们将实现Serializable接口。 据我所知,Java Input / OutputObject流支持多个对象的序列化和反序列化,例如:

           ObjectOutputStream oout = new ObjectOutputStream(
                     new FileOutputStream("output.bin"));

           oout.writeObject(o1);
           oout.writeObject(o2);
           oout.writeObject(o3);
           oout.flush();
           oout.close();

           ObjectInputStream oin = new ObjectInputStream(
                     new FileInputStream("output.bin"));

           Object ob1 = oin.readObject();
           Object ob2 = oin.readObject();
           Object ob3 = oin.readObject();

但是这里我只有一个可能的阅读顺序,我无法从/向二进制文件“output.bin”添加/删除/更新随机对象。我需要这个,因为我的第二级缓存的想法是使用在hashmap / hashtable中实现的相同机制,因此桶将是目录,链将是文件。

所以我正在寻找如何实现这种二进制序列化的正确方法,当我能够在文件中存储多个对象时,同时将能够从我的二进制文件中添加/删除随机对象。你能告诉我一下吗?

感谢。

1 个答案:

答案 0 :(得分:0)

您是否可以写入磁盘上的多个文件?使用Map获取/放置包含序列化数据的特定文件。 File.createTempFile()可以为每个文件获取一个唯一的名称。