我基本上做一个日记应用程序,其中每个单独的日记条目需要坚持,我想保留所有条目在一个单一的文件。序列化多个条目到同一个文件
我见过吨教程上序列化一个对象,所以我想出了这个解决方案,(不工作)但即使我设法解决它,感觉就像一个草率的解决方案。
(在这里,我试图序列一个ArrayList,每一次我保存的条目时,我反序列化列表,再次序列化之前添加新条目列表)
为了澄清,我的问题是:这是将对象保存到同一个文件的好方法吗?
还是没有人有一些关于别的东西的提示我应该尝试一下,关于这个视频或文档的链接也很感激。
public class Serializer
{
//Calls readFile and adds the returned entries to an ArrayList
//Add the target object to the list and write to the file
public static void writeToFile(Object target)
{
ArrayList entries = new ArrayList();
entries = readFile();
entries.add(target);
String filename = "entries.bin";
FileOutputStream fileOut = null;
ObjectOutputStream objOut = null;
try
{
fileOut = new FileOutputStream(filename);
objOut = new ObjectOutputStream(fileOut);
objOut.writeObject(entries);
objOut.close();
}
catch(IOException ex)
{
ex.printStackTrace();
}
}
//Reads the file and returns all entries in a list
public static ArrayList readFile()
{
ArrayList persistedEntries = new ArrayList<>();
String filename = "entries.bin";
FileInputStream fileIn = null;
ObjectInputStream objIn= null;
try
{
fileIn = new FileInputStream(filename);
objIn = new ObjectInputStream(fileIn);
persistedEntries = (ArrayList) objIn.readObject();
objIn.close();
}
catch(IOException ex)
{
ex.printStackTrace();
}
catch(ClassNotFoundException ex)
{
ex.printStackTrace();
}
return persistedEntries;
}
}
这可能帮助,如果你还别说在这种方式,它“不工作” - 它抛出一个异常?哪一个? – Hulk
我实际上并不确定什么是不工作的,因为我得到一个索引超出范围的异常,如果我已经理解不应该能够发生的ArrayLists。但我只试图运行程序,而不是自己的方法。 但是,正如你所看到的,我的问题并不是关于代码不工作的事实,我只是想看看这个“想法”是否好,或者如果我完全错过了某些东西,方向。 :) –
看着你的代码,我注意到你在编写一个文件之前总是“读取”。必须检查空白文件'entries.bin'以查看返回的ArrayList对象是什么? – jrbeverly