gpt4 book ai didi

java - Java 中的输出文件不断被覆盖

转载 作者:行者123 更新时间:2023-12-01 18:54:03 26 4
gpt4 key购买 nike

我尝试过使用 BufferWriter 格式以及 FileWriter 和 PrintWriter,每个都有一个 boolean true 语句,但它们的行为都与我只是使用一个简单的新文件相同。每次程序运行结束时,我都会调用写入要 append 的已保存数据的函数。最终发生的情况是它会覆盖最后保存的数据。我还有其他代码块也可以处理该文本文件,并且重新格式化它们也没有任何作用。

//saves user information to "Users.txt" which will be called in the finally block after choice switch
public void writeUsers()
{
try{

File userFile = new File("Users.txt");
PrintWriter output = new PrintWriter(userFile);
for(User i: userList) {
output.append("Name:");
output.println(i.getrealName());
output.append("UID:");
output.println(i.getidName());
output.append("Password:");
output.println(i.getpassword());
output.println(" ");
}
output.close();
System.out.print("Information has been saved to Users.txt\n");


}
catch(FileNotFoundException fnf) {
System.err.println("FileNotFoundException: File Users.txt does not exist " + fnf);
}
catch(IOException eyeoh) {
System.err.println("IOException: Error writing to Users.txt " + eyeoh);
}
}

最佳答案

构造函数PrintWriter(File)默认截断输出文件。调用 PrintWriter 的方法 append() 的事实并不意味着它会更改正在打开的文件的模式。 append 的行为是 described如:

An invocation of this method of the form out.append(csq) behaves in exactly the same way as the invocation

 out.write(csq.toString()) 

在这里,您可以使用 PrintWriter 的构造函数,该构造函数采用 FileOutputStream 进行 append

PrintWriter output = 
new PrintWriter(new FileOutputStream(userFile, true /* append = true */));

关于java - Java 中的输出文件不断被覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14791996/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com