我正在创建一个管理议程的应用程序。每个联系人都必须写在目标文件中。如何检查文件是否存在,是否有办法编写下一个对象而不覆盖?
import java.io.*;
public class WriteFile {
public void setContact(Agenda contact){
ObjectOutputStream out;
try{
File file = new File("Contacts.txt");
out = new ObjectOutputStream(new FileOutputStream(file));
out.writeObject(contact);
out.flush();
out.close();
System.out.println("Object written to file");
}
catch (FileNotFoundException ex) {
System.out.println("Error with specified file") ;
ex.printStackTrace();
}
catch (IOException ex) {
System.out.println("Error with I/O processes") ;
ex.printStackTrace();
}
}
}
答案 0 :(得分:2)
使用file.exists()
检查文件是否存在。
如果是,请从文件中读取旧数据,然后将旧数据和新数据写入临时文件。删除旧文件并将临时文件重命名为“Contacts.txt”。
答案 1 :(得分:2)
使用您的代码,我认为最简单的方法是使用file.exists()方法检查文件是否存在。
boolean exists = file.exists();
然后,您可以对FileOutputStream使用以下构造函数:
public FileOutputStream(File file, boolean append) throws FileNotFoundException
追加到文件的末尾。显然,该对象的构造应该包含在if-else子句中,具体取决于file.exists()的值。
答案 2 :(得分:1)
首先,能够编写的对象必须是实现Serializable接口的类的实例,该接口没有可实现的方法,它只是一个标志,表明它的实例可以被序列化。
第二个是写入数字,或者不覆盖旧数据,请在代码中使用它:
out = new ObjectOutputStream(new FileOutputStream(file), true);
后排有一个'真实',以使其附加,。