为什么写入文件时,我的文件写入器会留下不必要的行?

问题描述:

我有一个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(); 

所需的输出到文件里没有空行的文件中留下的任何地方,实际输出到文件中写入了几次后,如下所示:

output the the file

+0

始终[刷新你的缓冲区(http://docs.oracle.com/javase/7/docs/api/java/io/BufferedWriter.html#flush())后,书写 – kolossus 2014-09-30 14:42:05

+0

@kolossus [关闭](http://docs.oracle.com/javase/7/docs/api/java/io/BufferedWriter.html#close())已经刷新。 – Philipp 2014-09-30 14:45:43

+0

您的While循环仅将新行写入文件。 – EvenPrime 2014-09-30 14:54:28

这段代码是错误的:

String CurrentData = ""; 
while((bufferedReader.readLine()) != null) { 
    line = CurrentData; 
    bw.write(CurrentData); 
    ((BufferedWriter) bw).newLine(); 
} 

CurrentData(顺便说一句,变量应该以小写开始)常是s(空字符串)"",所以你不写任何东西,然后换行符。

while((currentData=bufferedReader.readLine()) != null) {...} 

应该工作

+0

我改变了这一点,但它仍然没有按照我的意愿编写,其输出如下所示:https://www.dropbox.com/s/u87xjja06ly2yoo/Screenshot%202014-09-30%2016.06 .51.png?dl = 0 – James 2014-09-30 15:07:32

+0

您需要在Details的末尾添加“\ n”,或者在将其写入文件后添加newLine。 – 2014-09-30 15:09:31

+0

有什么办法可以阻止它再次通过程序运行时多次写入同一个帐户? – James 2014-09-30 15:14:01