我在学校的任务有问题。我的意思是将一个对象的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());
}
}
您可以利用较新的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