2014-02-06 23 views
0

我寫了一個將arrayList打印到文本文件中的方法,但由於某種原因,它不會每次都在新行上打印,它會將所有內容打印到一行中。下面是我的代碼。如何將每行寫入Java中的新行?

private static void writingToFile() { 
     try { 
      BufferedWriter writeArrayList = new BufferedWriter (new FileWriter("D:\\text.txt")); 
      for(StoreCommands s : commandsList){ 
       writeArrayList.write(s + "\n"); 
      } 
      writeArrayList.close(); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

此刻我必須手動輸入路徑,我希望用戶選擇他們想放置文件的位置,我該怎麼做呢?謝謝。

+0

變化'「\ n」'「R \ \ n」 –

+0

感謝該工作能對''...我不是增加了自己的文件路徑提示用戶選擇一個? – user3278130

+0

在下面看到我的回答 –

回答

0

要附加上的文件,以創建:

new FileWriter("D:\\text.txt", true); 

的FileWriter公衆的FileWriter(字符串文件名, 布爾追加)拋出IOException異常構造給出一個布爾值,指示文件名的FileWriter對象是否 或不要附加寫入的數據。

參數fileName - 字符串系統相關的文件名。 append - 布爾值如果爲true,則數據將被寫入文件末尾 而不是開頭。如果找不到指定的文件 或發生其他I/O錯誤,則拋出IOException。 More here

其他例如:

 FileOutputStream fileOutput = new FileOutputStream("myfile.txt", true); 
     BufferedOutputStream bufferedOutput = new BufferedOutputStream(
       fileOutput); 

     bufferedOutput.write(<your binaries here>); 
0

如何試圖這樣

private static void writingToFile() { 
    try { 
     PrintWriter out = new PrintWriter (new FileWriter("D:\\text.txt")); 
     for(StoreCommands s : commandsList){ 
      out.println(s); 
     } 
     out.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

東西,我喜歡的PrintWriter因爲我喜歡println方法。您可以添加系統。在所有的陳述和打印之前,而不是寫入文件。

編輯,我也假設你正確地調用字符串。你可能不是需要像

 for(StoreCommands s : commandsList){ 
      out.println(s.toString()); 
     } 

最後的樂趣Java8版本

private static void writeToFile(){ 
    try(PrintWriter out = new PrintWriter(new FileWrite("test.txt"))){ 
     list.stream().map(StoreCommands::toString).forEach(s -> out.println(s)); 
     out.close(); 
    } catch (IOException ex){ 
     System.err.out(ex); 
    } 
} 
0

對於編寫新的線路,BufferedWritercheck out the newLine() method

對於讀取用戶輸入,您可以使用基本Scanner類,如下所示:

Scanner get = new Scanner(System.in); 
String path = get.nextLine(); 
... 
+0

嗨,掃描儀代碼不起作用,我已經爲它導入了庫。 – user3278130

+0

我需要製作一個獨立的方法嗎?還是可以將它粘貼到我已有的一箇中? – user3278130

+0

我會做主要方法中的用戶輸入和驗證。 –

0

問題1:

變化"\n""\r\n"

問題2

按照C.B.發佈的答案,給他/她一個投票(如果可能的話)...

0


要獲得關於不必硬編碼文件路徑問題,請嘗試使用命令行參數,像這樣(在你的類):

public static void main(String[] args){ 
... 
writingToFile(args[0]); 

然後,當你運行java應用程序,你會只需指定這樣的命令行上的文件名:
java <classname>.java D:/text.txt

相關問題