Читать содержимое файла как байты 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.