2012-12-04 195 views
5

我一直在嘗試將數組寫入文件。我知道如何將整數或字符串寫入文件,但是使數組混淆了我。我現在使用這個:如何將數組寫入文件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

你在必須循環arry打印出每個元素 – NimChimpsky

+6

Atleast google一次... – Parth

+0

你想讓結果可以被人類或其他程序讀取嗎? –

回答

12

像其他人一樣,你可以遍歷數組並打印出元素之一一個。要使輸出顯示爲數字而不是「字母和符號」,您需要將每個元素轉換爲字符串。所以,你的代碼變得像這樣:

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

如果你只想打印出像[1, 2, 3, ....]數組,你可以用這一個內襯更換循環:

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

哇謝謝這是完美的 – Lock1618

+0

很高興幫助! – Windle

11

您可以使用ObjectOutputStream類將對象寫入基礎流。

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

還要讀Object回來就好 -

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

Thankyou但是當我使用這個我得到一堆隨機數字字母和符號 – Lock1618

+1

@ Lock1618讀取對象後面像 - 'new ObjectInputStream(new FileInputStream(filename))。readObject();' –

3

只是遍歷數組中的元素。

例:

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

當我使用這個時,我沒有輸出到文件。 – Lock1618

+0

@ Lock1618你確定numOfElements被設置爲你的數組長度嗎?或者你的數組甚至是首先填充的? – Max

+0

該數組只是一個參數,我主要填充它。我用for(int i = 0; x.length> i; i ++) outputWriter.write(x [i]); – Lock1618

4

如果沒有問題與Apache公地的lib

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

如果結果是人們閱讀和數組的元素有一個適當的定義toString() .. 。

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