web-dev-qa-db-fra.com

comment écrire un tableau dans un fichier Java

J'ai essayé d'écrire un tableau dans un fichier. Je sais comment écrire des entiers ou String dans un fichier, mais apporter un tableau me perturbe. J'utilise ceci en ce moment:

public static void write (String file, int[]x) throws IOException{
    BufferedWriter outputWriter = null;
    outputWriter = new BufferedWriter(new FileWriter(filename));
    outputWriter.write("hi");// Here I know i cant just write x[0] or anything. Do i need 
                             //to loop in order to write the array?
    outputWriter.newLine();
    outputWriter.flush();  
    outputWriter.close();  



}
5
Lock1618

Comme d'autres l'ont dit, vous pouvez simplement parcourir le tableau et imprimer les éléments un par un. Pour que la sortie apparaisse sous forme de chiffres au lieu de "lettres et symboles", vous devez convertir chaque élément en chaîne. Donc, votre code devient quelque chose comme ceci:

public static void write (String filename, int[]x) throws IOException{
  BufferedWriter outputWriter = null;
  outputWriter = new BufferedWriter(new FileWriter(filename));
  for (int i = 0; i < x.length; i++) {
    // Maybe:
    outputWriter.write(x[i]+"");
    // Or:
    outputWriter.write(Integer.toString(x[i]);
    outputWriter.newLine();
  }
  outputWriter.flush();  
  outputWriter.close();  
}

Si vous voulez seulement imprimer le tableau comme [1, 2, 3, ....], vous pouvez remplacer la boucle par cette doublure:

outputWriter.write(Arrays.toString(x));
13
Windle

Vous pouvez utiliser la classe ObjectOutputStream pour écrire des objets dans un flux sous-jacent.

outputStream = new ObjectOutputStream(new FileOutputStream(filename));
outputStream.writeObject(x);

Et lisez le Object retour comme -

inputStream = new ObjectInputStream(new FileInputStream(filename));
x = (int[])inputStream.readObject()
13

Si vous êtes d'accord avec Apache commons lib

outputWriter.write(ArrayUtils.join(array, ","));
4
djechlin

Passez simplement en boucle sur les éléments de votre tableau.

Ex:

for(int i=0; numOfElements > i; i++)
{
outputWriter.write(array[i]);
}
//finish up down here
3
Max
private static void saveArrayToFile(String fileName, int[] array) throws IOException {
        Files.write(Paths.get(fileName), Collections.singleton(Arrays.toString(array)), Charset.forName("UTF-8"));
}

Si le résultat est lisible par les humains et que les éléments du tableau ont un toString() défini ...

outputString.write(Arrays.toString(array));
0
Tonny Madsen