2012-12-04 15 views
5

Ho cercato di scrivere una matrice in un file. So come scrivere interi o String in un file, ma portare un array mi confonde. Sto usando questo momento:come scrivere una matrice in un file 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

Dovrete al ciclo su l'arry stampa ogni elemento – NimChimpsky

+6

Atleast google una volta ... – Parth

+0

Vuoi che il risultato sia leggibile dagli umani o da altri programmi? –

risposta

12

Come altri hanno già detto, puoi semplicemente scorrere l'array e stampare gli elementi uno da uno. Per visualizzare l'output come numeri invece di "lettere e simboli" che stavi vedendo, devi convertire ogni elemento in una stringa. Così il codice diventa qualcosa di simile:

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

Se si desidera solo per stampare la matrice come [1, 2, 3, ....], è possibile sostituire il ciclo con questo uno di linea:

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

Wow grazie questo è perfetto – Lock1618

+0

Felice che sia stato d'aiuto! – Windle

11

È possibile utilizzare la classe ObjectOutputStream di scrivere gli oggetti a un flusso sottostante.

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

e leggere il Object schiena come -

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

Grazie, ma quando lo uso Ricevo un sacco di lettere e simboli di numeri casuali – Lock1618

+1

@ Lock1618 leggi l'oggetto come - 'new ObjectInputStream (new FileInputStream (filename)). readObject();' –

3

Basta ciclo sugli elementi nel vostro array.

Es:

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

Quando lo uso non ottengo output nel file. – Lock1618

+0

@ Lock1618 Sei sicuro che numOfElements sia impostato sulla lunghezza dell'array? O che il tuo array è anche popolato in primo luogo? – Max

+0

L'array è solo un parametro e lo popolo in main. Ho usato per (int i = 0; x.length> i; i ++) outputWriter.write (x [i]); – Lock1618

4

Se stai bene con Apache Commons lib

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

Se il risultato è per gli esseri umani a leggere e gli elementi dell'array avere una corretta toString() definito ..

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