2011-07-01 79 views
29

我想寫一個ArrayList<String>到文本文件中。如何將字符串ArrayList寫入文本文件?

ArrayList與代碼創建:

ArrayList arr = new ArrayList(); 

StringTokenizer st = new StringTokenizer(
    line, ":Mode set - Out of Service In Service"); 

while(st.hasMoreTokens()){ 
    arr.add(st.nextToken());  
} 
+0

這個輸入是什麼樣的輸出? –

+0

您的代碼看起來像是將文本文件讀入數組中。這是你的意思嗎? –

+0

我的代碼正在讀取一個文件,然後對它進行標記並將這些標記存儲在一個數組列表中。現在我想把這個數組列表寫入一個文件中。 – Ricky

回答

56
import java.io.FileWriter; 
... 
FileWriter writer = new FileWriter("output.txt"); 
for(String str: arr) { 
    writer.write(str); 
} 
writer.close(); 
+0

其顯示錯誤消息...「不兼容類型」 – Ricky

+0

將您的數組定義爲:ArrayList arr = new ArrayList (); –

+0

你是什麼意思由arr? – Hustl3r28

3

如果你想在ArrayList對象序列化到一個文件,這樣你就可以讀回在以後再次使用ObjectOuputStream/ObjectInputStream中的writeObject()/ readObject(),因爲ArrayList實現了Serializable。從你的問題來看,我不清楚你是想要這樣做,還是隻寫一個單獨的項目。如果是這樣的話,安德烈的答案會這樣做。

+0

我只是想將每個項目添加到一個文件中,但它顯示了一個不兼容類型的錯誤消息。 – Ricky

2

你可以使用ArrayList重載方法toString()

String tmp=arr.toString(); 
PrintWriter pw=new PrintWriter(new FileOutputStream(file)); 
pw.println(tmp.substring(1,tmp.length()-1)); 
32

你可以做到這一點的一行代碼時下。 創建ArrayList和表示文件要寫入Path對象:

Path out = Paths.get("output.txt"); 
List<String> arrayList = new ArrayList<> (Arrays.asList ("a" , "b" , "c")); 

創建實際的文件,並與在ArrayList中的文本填充它:

Files.write(out,arrayList,Charset.defaultCharset()); 
3

如果您需要在一行中創建每個ArrayList的項目,那麼你可以使用此代碼

private void createFile(String file, ArrayList<String> arrData) 
      throws IOException { 
     FileWriter writer = new FileWriter(file + ".txt"); 
     int size = arrData.size(); 
     for (int i=0;i<size;i++) { 
      String str = arrData.get(i).toString(); 
      writer.write(str); 
      if(i < size-1)**//This prevent creating a blank like at the end of the file** 
       writer.write("\n"); 
     } 
     writer.close(); 
    } 
+1

如果您打開同一個文件並繼續寫入,該怎麼辦?我認爲最後一個換行符是有用的。 –

+0

是的,它會對追加模式有用。只是評論如果條件,並會正常工作。 –

1

我會使用Apache的共享IO library.It文件實用程序將創建消減建議nt文件夾的輸出文件,如果它們不存在,Files.write(out,arrayList,Charset.defaultCharset());不會執行此操作,如果父目錄不存在則拋出異常。

FileUtils.writeLines(new File("output.txt"), encoding, list);