57 votes

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

Je veux écrire un ArrayList<String> dans un fichier texte.

El 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

Quel est le résultat souhaité 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, puis le tokenise et stocke ces tokens dans une liste de tableaux. maintenant je veux écrire cette liste de tableaux 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 : ArrayList<String> arr = new ArrayList<String>() ;

0 votes

Que voulez-vous dire par "arr" ?

3 votes

C'est le nom de la variable qui contient la référence au tableau

61voto

gabinetex Points 561

Vous pouvez le faire avec une seule ligne de code de nos jours. Créez la arrayList et l'objet Path représentant le fichier dans lequel vous voulez écrire :

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

Créez le fichier réel, et remplissez-le avec le texte dans la liste de tableaux :

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

0 votes

Quels sont les fichiers, de quel paquet proviennent-ils ?

0 votes

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

0 votes

Sympathique et simple.

15voto

charles_chung Points 250

Je vous suggère d'utiliser FileUtils de la bibliothèque Apache Commons IO. Il créera les dossiers parents du fichier de sortie, s'ils n'existent pas. 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 voulez sérialiser l'objet ArrayList dans un fichier afin de pouvoir le relire plus tard, utilisez ObjectOuputStream/ObjectInputStream writeObject()/readObject() car ArrayList implémente Serializable . Votre question ne me permet pas de savoir si vous voulez faire cela ou simplement écrire chaque élément individuel. Si c'est le cas, la réponse d'Andrey le fera.

0 votes

Je veux juste ajouter chaque élément à un fichier mais il montre un message d'erreur de type incompatible.

4voto

Joseph Selvaraj Points 566

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

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 votes

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

0 votes

Oui, il sera utile pour le mode append. Il suffit de commenter la condition if et cela fonctionnera bien.

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