我正在尝试写入文件,现在已将问题缩小到writeObject()方法。
它不是将数据写入文件。
当我运行oos.writeObject(siteData)时,没有任何反应。该文件仍为空
正如您在下面的代码中看到的,我已经放入一些System.out.println()并且它们都返回完整列表
我也一步一步地在调试器中查看它,并且在程序的后期不会被覆盖。
我还确保SiteData实现了Serializable
什么可能导致这个问题?
public void saveToStorageFile() throws IOException {
System.out.println("saveToStorageStart() started!");
FileOutputStream fos = new FileOutputStream(new File("SiteDataStorage"));
ObjectOutputStream oos = new ObjectOutputStream(fos);
//Prints the List
for(int i = 0 ; i < this.size(); i++) {
System.out.println("Save list:" + this.db.get(i).getText());
}
SiteData[] siteData = db.toArray(new SiteData[db.size()]);
//Prints the sitedata array length
System.out.println(siteData.length);
oos.writeObject(siteData);
oos.close();
System.out.println("Saved!");
}
谢谢!
我已添加此内容以使其成为一个完整的示例。
import java.io.*;
import java.util.*;
class SiteData implements Serializable {
public static void main(String[] args) throws Throwable {
new SiteData().saveToStorageFile();
}
private int size() { return 1; } // Did you not want db?
private List<SiteData> db = List.of(this);
private String getText() { return "Some text"; }
并附加了}
以关闭课程。
适合我!