为什么这段代码会导致Java重写文件中的数据?
我不确定为什么下面的代码每次都会导致Java重写文件中已经存在的数据,而我希望它实际上是将每一条新数据写入一行。我已经包含了相关的代码片段(我知道您可能会认为变量中有错误,但是没有,程序运行良好)。有人能帮我理解是什么原因造成的吗?我使用文件编写器的方式是什么为什么这段代码会导致Java重写文件中的数据?,java,bufferedreader,bufferedwriter,Java,Bufferedreader,Bufferedwriter,我不确定为什么下面的代码每次都会导致Java重写文件中已经存在的数据,而我希望它实际上是将每一条新数据写入一行。我已经包含了相关的代码片段(我知道您可能会认为变量中有错误,但是没有,程序运行良好)。有人能帮我理解是什么原因造成的吗?我使用文件编写器的方式是什么 String DirToWriteFile = System.getProperty("user.dir") + "/VirtualATM.txt"; //Get path to write text file to. String D
String DirToWriteFile = System.getProperty("user.dir") + "/VirtualATM.txt"; //Get path to write text file to.
String Details = "Name: " + name + " CardNo: " + CardNo + " Current Balance: " + balance + " overdraft? " + OverDraft + " OverDraftLimit: " + OverDraftLimit + " pin: " + PinToWrite;
try{
//Create writer to write to files.
File file = new File(DirToWriteFile);
Writer bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF8"));
// FileReader reads text files in the default encoding.
FileReader fileReader = new FileReader("VirtualATM.txt");
// Always wrap FileReader in BufferedReader.
BufferedReader bufferedReader = new BufferedReader(fileReader);
String CurrentData = "";
while((bufferedReader.readLine()) != null) {
line = CurrentData;
bw.write(CurrentData);
((BufferedWriter) bw).newLine();
}
bw.write(Details);
System.out.println("Account created!");
System.out.println(name + " Your card number is: " + CardNo);
// close the reader.
bufferedReader.close();
//Close the writer.
bw.close();
使用另一个FileOutputStream构造函数,该构造函数将布尔追加参数作为第二个参数。传入
true
,因为这将告诉Java将文本附加到现有文件中,而不是重写它
i、 例如,改变这一点:
File file = new File(DirToWriteFile);
Writer bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF8"));
为此:
File file = new File(DirToWriteFile);
FileOutputStream fos = new FileOutputStream(file, true); // **note second param?**
Writer bw = new BufferedWriter(new OutputStreamWriter(fos, "UTF8"));