我在做作业时遇到问题。我的意思是将对象的数组列表输出到文件中,我可以这样做。但是我应该检查文件是否存在,如果存在,然后输出到该文件,而不创建一个新文件。
我尝试过将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());
}
}
答案 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