Wie schreibe ich eine ArrayList von Strings in eine Textdatei?

Ich möchte eine ArrayList in eine Textdatei schreiben.

Die ArrayList wird mit dem Code erstellt:

 ArrayList arr = new ArrayList(); StringTokenizer st = new StringTokenizer( line, ":Mode set - Out of Service In Service"); while(st.hasMoreTokens()){ arr.add(st.nextToken()); } 

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

Das können Sie heutzutage mit einer einzigen Codezeile machen. Erstellen Sie die ArrayList und das Path-Objekt, die die Datei darstellen, in die Sie schreiben möchten:

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

Erstellen Sie die tatsächliche Datei und füllen Sie sie mit dem Text in der ArrayList:

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

Wenn Sie jedes ArrayList-Element in einer einzelnen Zeile erstellen müssen, können Sie diesen Code verwenden

 private void createFile(String file, ArrayList arrData) throws IOException { FileWriter writer = new FileWriter(file + ".txt"); int size = arrData.size(); for (int i=0;i 

Wenn Sie das ArrayList-Objekt in eine Datei serialisieren möchten, damit Sie es später wieder einlesen können, verwenden Sie objectOuputStream / ObjectInputStream writeObject () / readObject (), da ArrayList Serializable implementiert. Es ist mir nicht klar aus deiner Frage, ob du das machen willst oder einfach nur jedes einzelne Item schreiben willst. Wenn ja, dann wird Andreys Antwort das tun.

Ich würde vorschlagen, FileUtils von Apache Commons IO-Bibliothek zu verwenden. Es wird die übergeordneten Ordner der Ausgabedatei erstellen, wenn sie nicht vorhanden sind. While Files.write(out,arrayList,Charset.defaultCharset()); wird dies nicht tun, Ausnahme wird ausgetriggers, wenn die übergeordneten Verzeichnisse nicht existieren.

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

Sie könnten die überladene ArrayList-Methode toString()

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

Ich denke du kannst auch BufferedWriter verwenden:

 BufferedWriter writer = new BufferedWriter(new FileWriter(new File("note.txt"))); String stuffToWrite = info; writer.write(stuffToWrite); writer.close(); 

und davor erinnere dich auch hinzufügen

 import java.io.BufferedWriter;