Читать содержимое файла как байты Java

У меня есть 2 занятия по Java. Пусть они будут классом А и классом В.

Класс A получает входные данные String от пользователя и сохраняет входные данные в виде байта в FILE, затем класс B должен прочитать файл и отобразить байт в виде String.

КЛАСС А:

File file = new File("C:\\FILE.txt");

file.createNewFile();

FileOutputStream fos = new FileOutputStream(file);
String fwrite = user_input_1+"\n"+user_input_2;
fos.write(fwrite.getBytes());
fos.flush();
fos.close();

В КЛАССЕ B я написал код для чтения файла, но я не знаю, как читать содержимое файла в байтах.

КЛАСС Б:

fr = new FileReader(file);
br = new BufferedReader(fr);
arr = new ArrayList<String>();
int i = 0;

while((getF = br.readLine()) != null){  
    arr.add(getF);
}
String[] sarr = (String[]) arr.toArray(new String[0]);

Файл FILE.txt имеет следующие строки

[B @ 3ce76a1

[B @ 36245605

Я хочу, чтобы обе эти строки были преобразованы в соответствующие им строковые значения и затем отображать их. Как это сделать?

2 ответа

Решение

Вы вынуждены сохранять с помощью String byte[] представление для сохранения данных? Взгляните на сериализацию объектов ( Object Serialization Tutorial), вам не нужно беспокоиться о методах построчного чтения или записи низкого уровня.

Поскольку вы пишете байтовый массив через FileOutputStream, противоположной операцией будет чтение файла с использованием FileInputStream и создание String из байтового массива:

File file = new File("C:\\FILE.txt");
Long fileLength = file.length();
byte[] bytes = new byte[fileLength.intValue()]
try (FileInputStream fis = new FileInputStream(file)) {
    fis.read(bytes);
}
String result = new String(bytes);

Тем не менее, есть лучшие способы записи String в файл.

Вы можете написать его, используя FileWriter, и читать, используя FileReader (возможно, оборачивая их соответствующим BufferedReader/Writer), это позволит избежать создания промежуточного байтового массива. Или еще лучше, используйте Apache Commons' IOUtils или библиотеки Google Guava.

Другие вопросы по тегам