ObjectInputStream ois = new ObjectInputStream( new FileInputStream(file) );
时间: 2024-05-21 21:17:31 浏览: 126
这段代码是用来从文件中读取对象的。首先通过`FileInputStream`打开指定的文件,然后通过`ObjectInputStream`读取文件中的对象。这些对象必须是之前使用`ObjectOutputStream`写入文件的,而且读取的顺序必须与写入的顺序相同。如果读取的对象类型与写入的对象类型不同,程序可能会抛出`ClassCastException`异常。读取完毕后,关闭文件流以释放资源。
相关问题
try { ObjectInputStream ois=new ObjectInputStream(new FileInputStream("D:\\studentdatabase.dat")); List<student> inputlist=new ArrayList<>(); inputlist=(List<student>)ois.readObject(); for(student st:inputlist) { System.out.println(st); } ois.close(); }catch(ClassNotFoundException e) {}
这段代码是Java中读取对象序列化数据并将其反序列化为对象列表的代码。它首先创建一个ObjectInputStream对象,然后使用它来读取一个以前序列化的对象列表,将其转换为List<student>类型,并将其存储在inputlist变量中。然后,它遍历该列表并将每个学生对象打印出来。最后,它关闭ObjectInputStream对象。
需要注意的是,如果在反序列化对象时没有找到相应的类,则会抛出ClassNotFoundException异常。在这种情况下,该异常被捕获但不会被处理,因为这个代码块中没有任何处理它的代码。
优化这段代码public class DataIO { public static void savePersonList(List<Person> list, String fileName) throws IOException { ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(fileName)); oos.writeObject(list); oos.close(); } public static List<Person> loadPersonList(String fileName) throws IOException, ClassNotFoundException { ObjectInputStream ois = new ObjectInputStream(new FileInputStream(fileName)); List<Person> list = (List<Person>) ois.readObject(); ois.close(); return list; } }使其能够输出保存成功,保存失败,读入成功,读入失败的System
可以在方法中添加try-catch语句,捕获异常并输出对应的信息。修改后的代码如下:
```
public class DataIO {
public static void savePersonList(List<Person> list, String fileName) {
try {
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(fileName));
oos.writeObject(list);
oos.close();
System.out.println("保存成功!");
} catch (IOException e) {
System.out.println("保存失败!");
e.printStackTrace();
}
}
public static List<Person> loadPersonList(String fileName) {
try {
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(fileName));
List<Person> list = (List<Person>) ois.readObject();
ois.close();
System.out.println("读入成功!");
return list;
} catch (IOException | ClassNotFoundException e) {
System.out.println("读入失败!");
e.printStackTrace();
return new ArrayList<>();
}
}
}
```
这样,在保存和读取文件时,若出现异常,就会输出对应的信息。如果保存成功或读取成功,则也会输出对应的信息。
阅读全文