2012-12-04 6 views
5

J'ai essayé d'écrire un tableau dans un fichier. Je sais comment écrire des entiers ou des chaînes dans un fichier mais apporter un tableau me perturbe. Je me sers de ce moment:comment écrire un tableau dans un fichier Java

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(); 



} 
+0

que vous aurez à boucle sur l'arry imprimant chaque élément – NimChimpsky

+6

Atleast google une fois ... – Parth

+0

Voulez-vous que le résultat soit lisible par des humains ou par d'autres programmes? –

Répondre

12

Comme d'autres l'ont dit, vous pouvez simplement faire une boucle sur le tableau et imprimer les éléments par un. Pour que la sortie apparaisse sous forme de nombres au lieu de "lettres et symboles", vous devez convertir chaque élément en une 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 juste imprimer le tableau comme [1, 2, 3, ....], vous pouvez remplacer la boucle avec cette ligne de:

outputWriter.write(Arrays.toString(x)); 
+0

Wow, merci c'est parfait – Lock1618

+0

Heureux que ça a aidé! – Windle

11

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

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

Et lire le Object en arrière comme -

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

Merci, mais quand j'utilise ceci Je reçois un tas de lettres et symboles aléatoires – Lock1618

+1

@ Lock1618 relit l'objet comme - 'new ObjectInputStream (new FileInputStream (nomfichier)). readObject();' –

3

boucle Un peu plus les éléments de votre tableau.

Ex:

for(int i=0; numOfElements > i; i++) 
{ 
outputWriter.write(array[i]); 
} 
//finish up down here 
+0

Lorsque j'utilise ceci, je n'obtiens aucune sortie dans le fichier. – Lock1618

+0

@ Lock1618 Etes-vous sûr que numOfElements est défini sur la longueur de votre tableau? Ou que votre tableau est même peuplé en premier lieu? – Max

+0

Le tableau est juste un paramètre et je le peupler dans main. J'ai utilisé pour (int i = 0; x.length> i; i ++) outputWriter.write (x [i]); – Lock1618

4

Si vous êtes d'accord avec Apache commons lib

outputWriter.write(ArrayUtils.join(array, ",")); 
0

Si le résultat est pour l'homme et de lire les éléments du tableau ont un bon toString() défini ..

outputString.write(Arrays.toString(array)); 
Questions connexes