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

时间:2019-04-08 16:47:58

标签: java file input output

我在做作业时遇到问题。我的意思是将对象的数组列表输出到文件中,我可以这样做。但是我应该检查文件是否存在,如果存在,然后输出到该文件,而不创建一个新文件。

我尝试过将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());
    }
}

1 个答案:

答案 0 :(得分: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