将对象写入文件java

时间:2012-03-07 18:37:42

标签: java file-io bufferedreader

我正在创建一个管理议程的应用程序。每个联系人都必须写在目标文件中。如何检查文件是否存在,是否有办法编写下一个对象而不覆盖?

我的班级:

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();
        }             
    }

}

3 个答案:

答案 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);

后排有一个'真实',以使其附加,。