为什么写入文件时,我的文件写入器会留下不必要的行?
问题描述:
我有一个filewriter
(显然)正在用于将用户信息写入文件;它写得很好,程序运行良好,但是作者不会以所需的方式写入文件。我注意到在写入文件时,它会留下空白的行,有时我不想要这些行,我看不出为什么。以下是与文件写入相关的代码(它是文件中使用filewriter
的唯一位置)。所有变量等都已被定义并正常工作。为什么写入文件时,我的文件写入器会留下不必要的行?
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);
FileOutputStream fos = new FileOutputStream(file, true); // **note second param?**
Writer bw = new BufferedWriter(new OutputStreamWriter(fos, "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();
所需的输出到文件里没有空行的文件中留下的任何地方,实际输出到文件中写入了几次后,如下所示:
答
这段代码是错误的:
String CurrentData = "";
while((bufferedReader.readLine()) != null) {
line = CurrentData;
bw.write(CurrentData);
((BufferedWriter) bw).newLine();
}
CurrentData
(顺便说一句,变量应该以小写开始)常是s(空字符串)""
,所以你不写任何东西,然后换行符。
while((currentData=bufferedReader.readLine()) != null) {...}
应该工作
始终[刷新你的缓冲区(http://docs.oracle.com/javase/7/docs/api/java/io/BufferedWriter.html#flush())后,书写 – kolossus 2014-09-30 14:42:05
@kolossus [关闭](http://docs.oracle.com/javase/7/docs/api/java/io/BufferedWriter.html#close())已经刷新。 – Philipp 2014-09-30 14:45:43
您的While循环仅将新行写入文件。 – EvenPrime 2014-09-30 14:54:28