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