配列をファイルに書き込もうとしています。整数または文字列をファイルに書き込む方法は知っていますが、配列をもたらすと混乱します。私は今これを使用しています:
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();
}
他の人が言ったように、配列をループして要素を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));
ObjectOutputStream
クラスを使用して、基になるストリームにオブジェクトを書き込むことができます。
outputStream = new ObjectOutputStream(new FileOutputStream(filename));
outputStream.writeObject(x);
そしてObject
を次のように読んでください-
inputStream = new ObjectInputStream(new FileInputStream(filename));
x = (int[])inputStream.readObject()
Apache commons libで問題がなければ
outputWriter.write(ArrayUtils.join(array, ","));
配列の要素をループするだけです。
例:
for(int i=0; numOfElements > i; i++)
{
outputWriter.write(array[i]);
}
//finish up down here
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
);
}
結果が人間が読むためのもので、配列の要素に適切なtoString()
が定義されている場合...
outputString.write(Arrays.toString(array));