web-dev-qa-db-ja.com

配列をファイルに書き込む方法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();  



}
6
Lock1618

他の人が言ったように、配列をループして要素を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));
13
Windle

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

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

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

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

Apache commons libで問題がなければ

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

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

例:

for(int i=0; numOfElements > i; i++)
{
outputWriter.write(array[i]);
}
//finish up down here
3
Max
private static void saveArrayToFile(String fileName, int[] array) throws IOException {
    Files.write( // write to file
        Paths.get(fileName), // get path from file
        Collections.singleton(Arrays.toString(array)), // transform array to collection using singleton
        Charset.forName("UTF-8") // formatting
    );
}
1

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

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