как написать массив в файл Java

Я пытаюсь написать массив в файл. Я знаю, как писать целые числа или String в файл, но привести массив в замешательство. Я использую это прямо сейчас:

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

Как и другие, вы можете просто перебрать массив и распечатать элементы один за другим. Чтобы сделать вывод отображаемым как цифры вместо «букв и символов», которые вы видели, вам нужно преобразовать каждый элемент в строку. Таким образом, ваш код станет примерно таким:

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

Класс ObjectOutputStream можно использовать для записи объектов в базовый stream.

 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 

Если результат для людей читается, и элементы массива имеют правильную функцию toString() определенную …

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