我正在编写一个创建对象的程序,在ArrayList中引用,它以空ArrayList开头。用户根据他们提供的信息在运行时填充它。
我正在尝试使用标准
序列化ArrayList和构建其对象的类try {
FileOutputStream fs = new FileOutputStream("Foo.ser");
ObjectOutputStream os = new ObjectOutputStream(fs);
os.writeObject(barList);
os.close();
} catch(IOException ex) {
ex.printStackTrace();
当程序第一次运行时,文件(foo.ser)尚未创建,所以尝试使用相应的FileInputStream方法来检索状态,据我所知,会导致找不到文件异常。
我考虑使用if语句检查foo.ser,并且只在找到它时才实现FileInputStream,但文件检查的格式似乎是绝对路径。这似乎不是强大解决方案的候选者。如果您的程序在没有对象状态且没有Foo.ser的情况下启动,那么如何在Serialization上滚动?
答案 0 :(得分:1)
我考虑使用if语句检查
foo.ser
,并且仅在找到它时实现FileInputStream
,但文件检查的格式似乎是绝对路径。
这是不正确的。您可以使用相对路径或绝对路径检查文件是否存在。
但正如NPE指出的那样,只是尝试打开和读取文件更简单,并捕获可能发生的异常,如果失败的话。 (文件可能丢失,您可能没有读取权限,或文件可能存在但反序列化可能会失败。)