2012-05-11 57 views
0

我正在使用FileWriter類以Java編寫文本文件。寫入文本文件時出現問題

「\ n」不工作,所以爲了克服這個問題,我使用了BufferedWriter類和它的方法newLine()。它幫助我進入下一行,但唉,它總是繼續修改我以前的文件。我希望每次運行我的程序時生成一個新文件!

請有人幫我這個部分。爲什麼這個「\ n」不起作用?我的問題有什麼可能的解決辦法?

FileWriter write = new FileWriter ("D:/final project/report.txt", true); 
BufferedWriter bufferedWriter = new BufferedWriter (write); 

bufferedWriter.write("Current Time : " + hour + ":"+ minute + ":" + second + " " + am_pm); 
bufferedWriter.newLine(); 
bufferedWriter.write("Current Date : " + date + "/"+ (month+1) + "/" + year + " d/m/y "); 
bufferedWriter.newLine(); 
+2

你硬編碼的文件名包,所以* *爲什麼你認爲它應該在每次創建新的文件? –

+0

@JoachimSauer也許他的意思是他希望每次都覆蓋文件。 – Tharwen

回答

3

你真的來到這裏兩個完全正交的問題...

我想每一次當我運行我的程序,以生成新的文件!

那麼目前這就是你如何創建FileWriter

new FileWriter ("D:/final project/report.txt", true); 

這是使用constructor overload with an append parameter,這你設置到true ...建議你要附加到現有的文件

如果你不要想追加到現有的文件,爲什麼你指定true該參數?或者指定false,或者僅使用沒有該參數的重載,並在默認情況下覆蓋該文件。

我個人強烈建議不要直接使用FileWriter - 我會用FileOutputStream包裝在OutputStreamWriter中,以便您可以指定編碼。否則,它將使用平臺默認編碼,這很少是一個好主意IMO。 (我個人傾向於在選擇時使用UTF-8。)

爲什麼這個「\ n」不起作用?

它的工作原理是將\n字符(U + 000A)寫入文件。但是無論你使用的是還是這個文件大概都不會把它當作換行符 - 因爲Windows上的換行符通常是\r\nBufferedWriter.newLine()將使用平臺默認換行符,這就是工作原因。

+0

謝謝先生!現在一切工作正常...非常感謝! – rahul

2

使用正確的行分隔符:

String lineSep = System.getProperty("line.separator"); 
-1

的Java與終止,而不是隻換行回車和換行的每一行。即Java終止使用「\ r \ n」而不是「\ n」。

+1

當你使用'BufferedWriter'時,Java會使用平臺的默認值。但* Windows *使用'\ r \ n'而不是'\ n'。 –

0

您可以使用FileOutputStream中和DataOutputStream類

FileOutputStream fo=new FileOutputStream("c:/xyz/report.txt"); 
    DataOutputStream ds=new DataOutputStream(fo); 

    ds.writeBytes("Current Time : " +new Date()); 
    ds.writeBytes(System.getProperty("line.separator")+"Current Date : " +new Date());