如何使用ObjectOutputStream写入文件?

时间:2019-04-23 21:45:15

标签: java file file-io fileoutputstream

我正在尝试写入文件,现在将问题缩小到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!");
   }

谢谢!

1 个答案:

答案 0 :(得分:1)

我添加了它以使其成为一个完整的示例。

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"; }

并附加}以关闭课程。

为我工作!