如何将对象写入已存在的文件?

问题描述 投票:-1回答:1

我在学校的任务有问题。我的意思是将一个对象的arraylist输出到一个文件,我可以做。但我应该检查文件是否存在,如果存在,则输出到该文件,而不是创建新文件。

我已经尝试将FileOutputStream声明放在我的if语句之外,但是文件将始终存在。

我也尝试在if语句的前半部分创建一个新的ObjectOutputStream,但是我得到了一个关于头文件的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());
    }
}
java file input output
1个回答
0
投票

您可以利用较新的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
© www.soinside.com 2019 - 2024. All rights reserved.