Java 如何使用ObjectOutputStream编写文件?
我正在尝试写入文件,现在已将问题缩小到writeObject()方法 它没有将数据写入文件 当我运行oos.writeObject(siteData)时,什么都没有发生。文件仍然为空 正如您在下面的代码中所看到的,我在一些System.out.println()中加入了它们,它们都返回一个完整的列表 我还在调试器中一步一步地查看它,它在程序中不会被覆盖 我还确保SiteData实现可序列化 什么会导致这个问题Java 如何使用ObjectOutputStream编写文件?,java,file,file-io,fileoutputstream,Java,File,File Io,Fileoutputstream,我正在尝试写入文件,现在已将问题缩小到writeObject()方法 它没有将数据写入文件 当我运行oos.writeObject(siteData)时,什么都没有发生。文件仍然为空 正如您在下面的代码中所看到的,我在一些System.out.println()中加入了它们,它们都返回一个完整的列表 我还在调试器中一步一步地查看它,它在程序中不会被覆盖 我还确保SiteData实现可序列化 什么会导致这个问题 public void saveToStorageFile() throws IOEx
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!");
}
public void saveToStorageFile()引发IOException{
System.out.println(“saveToStorageStart()已启动!”);
FileOutputStream fos=新的FileOutputStream(新文件(“SiteDataStorage”);
ObjectOutputStream oos=新的ObjectOutputStream(fos);
//打印列表
对于(int i=0;i
谢谢 我添加了这个,使其成为一个完整的示例
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"; }
import java.io.*;
导入java.util.*;
类SiteData实现可序列化{
公共静态void main(字符串[]args)抛出可丢弃的{
新建SiteData().SaveToStorage文件();
}
private int size(){return 1;}//是否不需要数据库?
私有列表db=列表(本);
私有字符串getText(){return“Some text”;}
并附加}
以关闭该类
为我工作 @Gustavo关闭一个流会隐式刷新它。谢谢你的提示,但是文件仍然是空的。你确定你正在查看正确的文件吗?尝试使用绝对路径。您是否正在创建更多
新文件输出流(新文件(“SiteDataStorage”)代码>?每次这样做时,文件的旧内容都会被删除。也许您想通过newfileoutputstream(newfile(“SiteDataStorage”),true,将其设置为追加模式代码>?无论如何,要获得不涉及猜测的适当帮助,请提供(也称为),以便我们可以在机器上重现此问题并进行调试。我遇到一个编译错误:(SiteData)的方法对于该类型未定义List@TheJW如果出于某种原因仍在使用Java SE 8,请将其替换为Arrays.asList
.square,我的档案一直空着。也许更新java会有所帮助?