2012-12-04 17 views
5

Próbowałem napisać tablicę do pliku. Wiem, jak napisać liczby całkowite lub String do pliku, ale przynieść tablicy mylić mnie. Używam tego teraz:jak napisać tablicę do pliku 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

musisz pętli nad drukowanie każdego elementu – NimChimpsky

+6

Atleast google it once ... – Parth

+0

Czy chcesz, aby wynik był czytelny dla ludzi lub innych programów? –

Odpowiedz

12

Jak powiedzieli inni, możesz po prostu zapętlić tablicę i wydrukować elementy jeden o jeden. Aby wynik był wyświetlany jako liczby zamiast "liter i symboli", które widziałeś, musisz przekonwertować każdy element na ciąg znaków. Więc twój kod staje się coś takiego:

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

Jeśli chcesz po prostu wydrukować tablicę jak [1, 2, 3, ....] można zastąpić pętlę z tej jednej wkładki:

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

Wow, dziękuję, to jest idealne – Lock1618

+0

Cieszę się, że pomogło! – Windle

11

Można użyć klasy ObjectOutputStream napisać obiektów do strumienia bazowego.

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

i odczytać Object powrotem jak -

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

Dziękuję, ale kiedy używam tego Dostaję pęczek liczb losowych i symboli – Lock1618

+1

@ Lock1618 odtwórz obiekt z powrotem jak - 'nowy ObjectInputStream (nowy FileInputStream (filename)). readObject();' –

3

Sprawiedliwego pętli ciągu elementów w tablicy.

Ex:

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

Kiedy używam tego, nie otrzymuję danych wyjściowych do pliku. – Lock1618

+0

@ Lock1618 Czy jesteś pewien, że parametr numOfElements jest ustawiony na długość twojej tablicy? Lub, że twoja tablica jest w pierwszej kolejności zaludniona? – Max

+0

Tablica jest tylko parametrem i zapełniam ją główną. Użyłem dla (int i = 0; x.length> i; i ++) outputWriter.write (x [i]); – Lock1618

4

Jeśli jesteś w porządku z Apache Commons lib

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

Jeśli wynik jest dla ludzi do czytania i elementy tablicy mają właściwe toString() zdefiniowane ..

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