Прочитать файл в Byte[] в Java

В Java чтение файла в массив байтов может потребоваться в различных ситуациях. Например, передача информации через сеть и другие API для дальнейшей обработки.

Давайте изучим несколько способов чтения данных из файлов в массив байтов в Java.

1. Использование Files.readAllBytes()

Files.readAllBytes() — лучший метод для использования Java 7, 8 и выше. Он считывает все байты из файла и закрывает файл. Файл также закрывается при ошибке ввода-вывода или при возникновении другого исключения времени выполнения.

Этот метод считывает все байты в память за один оператор, поэтому не используйте его для чтения больших файлов, иначе вы можете столкнуться с ошибкой OutOfMemoryError.

 Путь путь = Paths.get("C:/temp/test.txt");byte[] данные = Files.readAllBytes(путь);

2. Использование FileInputStream

Используйте FileInputStream для чтения содержимого файла, когда у вас уже есть ссылка на InputStream. Не забудьте закрыть поток после завершения чтения; в противном случае используйте блок try-with-resources.

 Файл file = новый Файл("C:/temp/test.txt");byte[] байты = новый byte[(int) file.length()];попробуйте(FileInputStream fis = new FileInputStream(file)) {fis.read(байты);}

3. Использование Apache Commons IO

Другой хороший способ чтения данных в массив байтов — библиотека io apache commons. Она предоставляет несколько полезных классов для работы с операциями io.

В следующем примере мы используем класс FileUtils для чтения содержимого файла в массив байтов. Файл всегда закрывается либо при успешном завершении, либо при ошибке чтения.

byte[] bytes = FileUtils.readFileToByteArray(file);

Похожий класс — IOUtils, который можно использовать таким же образом.

byte[] bytes = IOUtils.toByteArray(new FileInputStream(file));

4. Использование гуавы

Еще один хороший способ считывания данных в массив байтов — библиотека Google Guava.

В следующем примере класс com.google.common.io.Files используется для чтения содержимого файла в массив байтов.

byte[] bytes3 = com.google.common.io.Files.toByteArray(file);

Исходный код на Github

Прокрутить вверх