записать объект в файл Java - PullRequest
0 голосов
/ 07 марта 2012

Я создаю приложение, которое управляет повесткой дня. Каждый контакт должен быть записан в объектном файле. Как я могу проверить, существует ли файл и есть ли способ написать следующий объект без перезаписи ??

Мой класс:

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 ]

2 голосов
/ 07 марта 2012

Используя ваш код, я считаю, что проще всего было бы использовать метод file.exists (), чтобы проверить, существует ли файл.

boolean exists = file.exists();

Затем вы можете использоватьследующий конструктор для FileOutputStream:

public FileOutputStream(File file, boolean append) throws FileNotFoundException

для добавления в конец файла.Очевидно, что конструкция этого объекта должна быть заключена в предложение if-else, в зависимости от значения file.exists ().

2 голосов
/ 07 марта 2012

Используйте file.exists(), чтобы проверить, существует ли файл.

Если это так, прочитайте старые данные из файла, затем запишите старые данные и новые данные во временный файл.Удалите старый файл и переименуйте временный файл в «Contacts.txt».

1 голос
/ 07 марта 2012

Во-первых, объект, в который можно записать, должен быть экземпляром класса, который реализует интерфейс Serializable, этот интерфейс не имеет метода для реализации, это просто флаг, который говорит о том, что его объекты могут быть сериализованы.

секунду, чтобы сделать запись бесконечно или не перезаписывать старые данные, используйте это в своем коде:

out = new ObjectOutputStream(new FileOutputStream(file), true);

на заднем сиденье есть «true», чтобы добавить его.

...