2015-11-04 50 views
0

對不起,模糊的標題。我擁有的是一個基本上接受用戶輸入的程序,然後將其打印到文件中。很簡單。輸入內容包括一個備忘錄標題和隨後在該標題下提交的備忘錄。在兩者之間會有日期戳記。Java格式是否可轉換爲寫入文件?

我有打印的文件中的代碼如下所示:

System.out.println("Memo topic (enter -1 to end):"); 
String message = console.nextLine(); 
now = new Date(); 
String dateStamp = now.toString(); 
out.println(topic + "\n" + dateStamp + "\n" + message); 

出來是一個PrintWriter我先前在程序中創建的名稱。控制檯顯示說明並接受輸入,然後將它們寫入文件。當我看到這一切一起運行,看起來像這樣的文件中的文本:

ThanksgivingWed Nov 4 14:39:36 CST"Pick up some turkey at the Kroger, you 
lazy bum!" said Mom. 

但是,如果我改變輸出,只是打印到控制檯時,換行符實際工作和三塊的輸出字符串按行分開。我如何修改它以正確輸出到文件?

+0

你在記事本中打開你的最終文件? – reos

+0

是的,它只是一個在Windows的記事本中打開的純文本文件。 – JoeSchmuck

回答

6

我假設你在Windows上測試這個。這會導致問題,因爲在Windows上,新行由\r\n(回車,換行)表示,並不是所有的應用程序都會愉快地接受\n

爲了得到一個系統無關的行分隔符,你應該使用System.lineSeparator()來代替,該

返回系統相關的行分隔符字符串。它總是返回相同的值 - 系統屬性line.separator的初始值。

在UNIX系統上,它返回「\ n」;在Microsoft Windows系統上,它返回「\ r \ n」。

所以,你的代碼將成爲這個:

out.println(topic + System.lineSeparator() + dateStamp + System.lineSeparator() + message); 
+0

謝謝。因此lineSeparator()本身決定使用哪個字符,取決於它所運行的系統?如果我在另一臺機器上運行這個相同的代碼,它會自動決定適當的分隔符? – JoeSchmuck

+0

@JoeSchmuck是的。它的目的是讓你根本不需要擔心它。在運行時,它會根據它運行的位置返回正確的值。 – resueman

相關問題