【发布时间】:2019-09-13 03:34:03
【问题描述】:
我正在尝试写入文件,现在已将问题缩小到 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!");
}
谢谢!
【问题讨论】:
-
@Gustavo 关闭流将隐式刷新它。
-
感谢提示,但文件仍为空
-
您确定您查看的是正确的文件吗?尝试使用绝对路径。
-
你在装箱更多
new FileOutputStream(new File("SiteDataStorage"));吗?每次您这样做时,文件的旧内容都会被删除。也许您想通过new FileOutputStream(new File("SiteDataStorage"), true);将其设置为附加模式? -
无论如何要获得不涉及猜测的适当帮助,请提供minimal reproducible example(又名SSCCE),以便我们可以在我们的机器上重现此问题并对其进行调试。
标签: java file file-io fileoutputstream