2014-09-30 52 views
0

我有一個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

回答

2

這段代碼是錯誤的:

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