57 votes

Comment écrire un ArrayList de Strings dans un fichier texte?

Je veux écrire un ArrayList dans un fichier texte.

L'ArrayList est créé avec le code :

ArrayList arr = new ArrayList();

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

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

0 votes

Quelle est votre sortie souhaitée pour cette entrée?

0 votes

Votre code semble lire un fichier texte dans un tableau. Est-ce bien ce que vous voulez dire?

0 votes

Mon code lit un fichier, le tokenize, puis stocke ces jetons dans un ArrayList. Maintenant, je veux écrire cet ArrayList dans un fichier.

107voto

Andrey Adamovich Points 9404
import java.io.FileWriter;
...
FileWriter writer = new FileWriter("output.txt"); 
for(String str: arr) {
  writer.write(str + System.lineSeparator());
}
writer.close();

0 votes

Définissez votre tableau comme suit : ArrayList arr = new ArrayList();

0 votes

Que signifie arr?

3 votes

C'est le nom de la variable qui contient une référence à un tableau

61voto

gabinetex Points 561

Java NIO

Vous pouvez le faire avec une seule ligne de code de nos jours en utilisant Java NIO.

Créez la liste et l'objet Path représentant le fichier dans lequel vous voulez écrire :

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

Créez le fichier réel, et remplissez-le avec le texte de la liste en appelant la classe d'utilitaire java.nio.file.Files.

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

0 votes

Qu'est-ce que Files, de quel package cela provient-il?

0 votes

Java.nio.file.Files, classe Java standard depuis 1.7

0 votes

Joli et simple.

15voto

charles_chung Points 250

Je suggérerais d'utiliser FileUtils de la bibliothèque Apache Commons IO. Cela créera les dossiers parent du fichier de sortie s'ils n'existent pas, tandis que Files.write(out, arrayList, Charset.defaultCharset()); ne le fera pas, en lançant une exception si les répertoires parents n'existent pas.

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

4voto

ribram Points 1145

Si vous souhaitez sérialiser l'objet ArrayList dans un fichier afin de pouvoir le lire ultérieurement, utilisez ObjectOutputStream/ObjectInputStream writeObject()/readObject() car ArrayList implémente Serializable. Il n'est pas clair pour moi, d'après votre question, si vous souhaitez le faire ou simplement écrire chaque élément individuel. Si c'est le cas, alors la réponse d'Andrey fera l'affaire.

0 votes

Je veux simplement ajouter chaque élément à un fichier mais cela affiche un message d'erreur de type incompatible.

4voto

Joseph Selvaraj Points 566

Si vous avez besoin de créer chaque élément de l'ArrayList sur une seule ligne, vous pouvez utiliser ce code

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

1 votes

Que se passe-t-il si vous ouvrez le même fichier et que vous continuez à écrire dedans ? Je pense qu'avoir le dernier caractère de nouvelle ligne est utile.

0 votes

Oui, cela sera utile pour le mode d'ajout. Il suffit de commenter la condition "if" et cela fonctionnera correctement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X