Как мне записать объект в файл, который уже существует? - PullRequest
0 голосов
/ 08 апреля 2019

У меня проблема с заданием из школы. Я предназначен для вывода массива объектов в файл, что я могу сделать. Но я должен проверить, существует ли файл, и если он существует, то выводить в этот файл, а не создавать новый.

Я пытался поместить объявление FileOutputStream вне моего оператора if, но тогда файл всегда будет существовать.

Я также пытался создать новый ObjectOutputStream в моей первой половине оператора if, но я получаю IOException относительно заголовков.

Как записать объекты (класса Employee) в файл, который уже существует?

    public void saveEmployeesToFile() {
          try {
        File employeeFile = new File("CurrentEmployees.emp");

        if (employeeFile.exists()) {

            System.out.println("File already exists");

        } else {
            FileOutputStream employeeFileObject = new FileOutputStream(employeeFile);
            ObjectOutputStream output = new ObjectOutputStream(employeeFileObject);

            for (Employee thisEmp : getEmployees()) {
                output.writeObject(thisEmp);
            }
            System.out.println("Employees successfully saved to new file");
            employeeFileObject.close();
            output.close();
        }
    } catch (IOException ioe) {
        System.out.println("Error initializing stream");
        System.out.println(ioe.getMessage());
    }
}

1 Ответ

0 голосов
/ 08 апреля 2019

Вы можете использовать более новый пакет NIO.

Ваш вопрос по сути: "Как мне создать FileOuputStream для файла, который уже существует?"

Path employeeFilePath = Paths.get(employeeFile.toURI());
FileOutputStream employeeFileObject;
if (employeeFile.exists()) {
    employeeFileObject = Files.newOutputStream(employeeFilePath, StandardOpenOption.TRUNCATE_EXISTING);
} 
else {
    employeeFileObject = Files.newOutputStream(employeeFilePath, StandardOpenOption.CREATE_NEW);
}

// Proceed to write data
...