2012-12-04 9 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

一度だけGoogleにしてください... – Parth

+0

結果を人間や他のプログラムが読めるようにしますか? –

答えて

12

他の人が言ったように、配列をループして要素1 一つ。あなたが見ていた「文字と記号」ではなく、数字として出力を表示するには、各要素を文字列に変換する必要があります。あなただけの[1, 2, 3, ....]のような配列をプリントアウトしたい場合は

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つのライナーでループを置き換えることができます:

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

ありがとう、私はこれを使用します私は乱数の文字と記号の束を得る – Lock1618

+1

@ Lock1618のようなオブジェクトを読み返す - '新しいObjectInputStream(新しいFileInputStream(ファイル名))。readObject();' –

3

だけループ。

例:あなたは

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

私はこれを使うとファイルに出力を得ない。 – Lock1618

+0

@ Lock1618 numOfElementsが配列の長さに設定されていますか?または、配列は最初の場所にも配置されますか? – Max

+0

配列は単なるパラメータであり、mainにそれを設定します。私は(int i = 0; x.length> i; i ++)のために使用しました。 outputWriter.write(x [i]); – Lock1618

4

結果は、人間が読むことで、配列の要素が定義された適切なtoString()を持っている場合... 。

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

libにはApache Commonsので大丈夫なら

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