Java 如何使用ObjectOutputStream编写文件?

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

我正在尝试写入文件,现在已将问题缩小到writeObject()方法

它没有将数据写入文件

当我运行oos.writeObject(siteData)时,什么都没有发生。文件仍然为空

正如您在下面的代码中所看到的,我在一些System.out.println()中加入了它们,它们都返回一个完整的列表

我还在调试器中一步一步地查看它,它在程序中不会被覆盖

我还确保SiteData实现可序列化

什么会导致这个问题

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会有所帮助?