【发布时间】:2021-03-26 08:05:48
【问题描述】:
为什么当我实现 oos.close() 方法时它可以工作(我的意思是它会删除文件),否则 - 不行?
File newFile = new File("D:\\1.ser");
try {
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(newFile));
oos.writeObject(new A());
oos.close();
}catch (Exception e){
e.printStackTrace();
}
if(newFile.delete()){
System.out.println(newFile.getName() + " is deleted!");
}else{
System.out.println("Delete operation is failed.");
}
【问题讨论】:
-
close()释放文件句柄。文档是你的朋友docs.oracle.com/javase/7/docs/api/java/io/… -
您可以通过删除存储字节的任何内容来删除序列化对象——文件、字节数组等等。
-
似乎您已经知道答案:您必须关闭输出流。使用 try-with-resources 可以做得更好。
标签: java file oop serialization stream