Как писать и читать Array в файле .dat в Java?

Исследуя, я думаю, что я знаю, как возможно писать Array в файле .dat в Java, хотя я не знаю, ли будет это правильный способ. Это - то, что у меня есть, чтобы это писать:

try {
    BufferedWriter out = null;
    out = new BufferedWriter(new FileWriter("continuo.dat"));
    for (int i = 0; i < x; i++) {
        for (int j = 0; j < x; j++) {
            out.write(continuo[i][j] + " ");
        }
    }                       
    out.flush();
    out.close();
} catch (FileNotFoundException e) {
    System.out.println("ERROR al crear el fichero");
    return;
} catch (IOException e) {
    System.out.println("ERROR al escribir en el fichero");
    return;
}

Но я не достиг информации, о как чтении этого. Как может читать Array файла .dat в Java?

1
задан 08.01.2017, 02:51
0 ответов

Если цель состоит в том, чтобы мочь сохранять просто договоренность в файл, и потом мочь восстанавливать договоренность читая это файла, не импортируя формата файла в себе, тогда ты можешь использовать классы ObjectOutputStream и ObjectInputStream чтобы это делать. В действительности, ты можешь использовать эти классы, чтобы последовательно преобразовывать любой objecto, всякий раз когда это был один из примитивных типов в Java (int, float, String, и т.д.) или будьте помечены apropiadamente как serializable (посредством осуществления интерфейса Serializable).

Здесь я оставляю тебе полный пример, который ты можешь тестировать из-за твоего счета:

public static void main(String[] args) throws Exception {
    // 1. crear arreglo.
    String[][] array = new String[2][];
    array[0] = new String[2];
    array[0][0] = "(0, 0)";
    array[0][1] = "(0, 1)";
    array[1] = new String[2];
    array[1][0] = "(1, 0)";
    array[1][1] = "(1, 1)";

    // 2. Escribir el arreglo al archivo.
    writeArray(array);

    // 3. Leer el arreglo del archivo.
    String[][] deserializedArray = readArray();

    // 4. Verificar contenidos del arreglo.
    for (String[] subArray : deserializedArray) {
        for (String item : subArray) {
            System.out.println(item);
        }
    }
}

private static void writeArray(String[][] array) throws IOException {
    try (ObjectOutputStream out = new ObjectOutputStream(
            new FileOutputStream("continuo.dat"))) {

        out.writeObject(array);
    }
}

private static String[][] readArray() throws IOException, ClassNotFoundException {
    try (ObjectInputStream in = new ObjectInputStream(
            new FileInputStream("continuo.dat"))) {

        return (String[][]) in.readObject();
    }
}

Если ты это будешь скроллировать, ты увидишь, что он пишет и читает договоренность правильно, производя следующий результат:

(0, 0)
(0, 1)
(1, 0)
(1, 1)

Ты заметишь, что, как не especificastes тип переменной continuo в твоем коде, я использовал тип String[][] для моего примера. Но, снова, ты можешь использовать любой тип, пока был один из типа примитивным в Java, или говорилось о классе, который осуществлял бы интерфейс Serializable.

Если ты желаешь больше информации, продолжи ссылки, которые я оставил тебе наверху.

3
ответ дан 03.12.2019, 17:50
  • 1
    @Stefan: спасибо за edició n. За этим последует, когда я имею C# в разуме, где está ndar он отличается. –  08.01.2017, 05:16
  • 2
    Ничего, я не faná костариканский лучших практик, но в этих случаях они помогают в понимании có я говорю лучше (и не ждать C#, где есть Java :D), чтобы мочь помечать это как ú til в хорошем сознании. –  08.01.2017, 05:30
  • 3
    @Stefan: Полностью договора :) –  08.01.2017, 05:34

Obs:

  • Поскольку я не имею доступа к файлу continuo.dat, я поместил, что он прочитал всю цепь. Идея состоит в том, чтобы с этим кодом он приспособился к необходимости, потому что я не имею доступа к файлу .dat

В твоем методе, где он будет содержать часть кода, который читает твой файл tenes, который IOException добавлять throws

Пример:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class ArchivoDAT {

    public static void main(String[] args) throws IOException {
        // Leer archivo
        String cadena;
        FileReader f = new FileReader("continuo.dat");
        BufferedReader b = new BufferedReader(f);
        while((cadena = b.readLine())!=null) {
            System.out.println(cadena);
        }
        b.close();  
    }
}
-1
ответ дан 03.12.2019, 17:50
  • 1
    Я имею импортируемый java.io.* Проблема состоит в том, что я хочу прочитать array как int, не как string, не, если я объясняюсь. –  08.01.2017, 00:10
  • 2
    @dfortu честная có я говорю, что я разместил. Deberí чтобы функционировать. Despué s приспособь твой có я говорю. Dí melo, если оно ты функционирует –  08.01.2017, 00:12
  • 3
    readLine () не идет функционировать aquí не отделяй Strings с newLine в Вашем коде. –  08.01.2017, 05:06
  • 4
    @StefanNolde, поскольку не солитер получил доступ в файл continuo.dat, я поместил así. Идея, чем с этим có я говорю, что я приспособил в Вашу необходимость, потому что я не предоставляю файл –  08.01.2017, 15:11