14

配列をファイルに書き込もうとしています。整数または文字列をファイルに書き込む方法は知っていますが、配列を持ってくると混乱します。私は今これを使用しています:

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



}
4

6 に答える 6

20

このクラスを使用しObjectOutputStreamて、基になるストリームにオブジェクトを書き込むことができます。

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

そして、Object後ろを次のように読んでください-

inputStream = new ObjectInputStream(new FileInputStream(filename));
x = (int[])inputStream.readObject()
于 2012-12-04T16:21:32.240 に答える
20

他の人が言ったように、配列をループして要素を1つずつ出力するだけです。表示されていた「文字と記号」ではなく数値として出力を表示するには、各要素を文字列に変換する必要があります。したがって、コードは次のようになります。

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, ....]、ループを次の1つのライナーに置き換えることができます。

outputWriter.write(Arrays.toString(x));
于 2012-12-04T16:39:07.143 に答える
4

Apache commons lib に問題がなければ

outputWriter.write(ArrayUtils.join(array, ","));
于 2012-12-04T16:28:24.360 に答える
3

配列内の要素をループするだけです。

元:

for(int i=0; numOfElements > i; i++)
{
outputWriter.write(array[i]);
}
//finish up down here
于 2012-12-04T16:25:18.990 に答える
0

結果が人間が読み取るためのものであり、配列の要素が適切にtoString()定義されている場合...

outputString.write(Arrays.toString(array));
于 2012-12-04T16:30:33.463 に答える