come scrivere una matrice in un file Java

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 adesso:

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

Come altri hanno già detto, puoi semplicemente scorrere l’array e stampare gli elementi uno per uno. Per visualizzare l’output come numeri invece di “lettere e simboli” che stavi vedendo, devi convertire ogni elemento in una stringa. Quindi il tuo codice diventa qualcosa del genere:

 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 vuoi solo stampare la matrice come [1, 2, 3, ....] , puoi sostituire il loop con questa fodera:

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

È ansible utilizzare la class ObjectOutputStream per scrivere oggetti su un stream sottostante.

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

E leggi l’ Object come –

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

Se stai bene con Apons

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

Basta scorrere gli elementi dell’array.

Ex:

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

Se il risultato è per gli umani da leggere e gli elementi dell’array hanno un toString() corretto definito …

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