繁体   English   中英

用二进制文件读写和保存序列化对象

[英]reading writing and saving serialized objects with a binary file

我正在做一个项目,我希望用户能够将对象输入到 ArrayList 中,关闭程序,并能够再次打开程序并让用户可以访问以前的 ArrayList(从第一次运行开始)。

我目前将用户输入对象放入 ArrayList,列表将 ArrayList 序列化并保存为 .bin 文件。 当我再次运行程序时,以前的列表被保存,但是当我输入新值时,它会覆盖旧列表。 我想我正在寻找一种方法来查看我的 .bin 文件是否存在,如果存在,则将新对象添加到 ArrayList,如果不存在,则创建一个新对象。 我将在下面添加一些示例代码。

在这里,我创建了 arraylist 和一个为其创建 .bin 文件的字符串。

public class Tender {
ArrayList<Alcohol> arraylist = new ArrayList<Alcohol>();
String dataList = "dataList.bin";
}

这是我序列化 ArrayList 的地方。

    private void Serialize() throws IOException {
         try (ObjectOutputStream os = new ObjectOutputStream(new  FileOutputStream(dataList))) {
             os.writeObject(arraylist);
             os.close();

             System.out.println("done writing");
         }
     }

这里是我尝试从上一次运行中加载回序列化文件的地方。

private void load() throws FileNotFoundException, IOException, ClassNotFoundException {
    try (ObjectInputStream is = new ObjectInputStream(new FileInputStream(dataList))) {
        ArrayList newAL;
        newAL = (ArrayList) is.readObject();
        System.out.println(newAL);
    }
    Start();
}
}

查看文件是否存在的方法是尝试打开它,并捕获在它不存在时发生的FileNotFoundEzception 如果它在那里,请阅读列表; 如果不是,请创建一个新的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM