Научитесь записывать заданный byte[] в файл, используя различные решения. Мы будем использовать Java NIO, Commons IO и Guava API, которые предоставляют простые API для этого варианта использования.
1. Files.write() Java NIO
Files.write() — это простейший способ записи байтов в файл.
Мы должны быть очень осторожны с опциями открытия файла при записи байтов. По умолчанию используются опции CREATE, TRUNCATE_EXISTING и WRITE. Это означает, что метод открывает файл для записи, создает файл, если он не существует, или изначально обрезает обычный файл до размера 0.
byte[] bytes = "testData".getBytes();Path filePath = Paths.get("test.txt");Files.write(filePath, bytes);
Если мы не перезаписываем содержимое файла, а хотим добавить байты в существующее содержимое файла, то мы можем использовать параметр StandardOpenOption.APPEND.
byte[] bytes = "testData".getBytes();Path filePath = Paths.get("test.txt");Files.write(filePath, bytes, StandardOpenOption.APPEND);
Если мы хотим создать новый файл, всегда, то мы можем передать опцию StandardOpenOption.CREATE_NEW. Это гарантирует, что метод выдаст FileAlreadyExistsException, если файл уже существует.
byte[] bytes = "testData".getBytes();Path filePath = Paths.get("test.txt");Files.write(filePath, bytes, StandardOpenOption.CREATE_NEW);
2. Использование FileOutputStream
Использование FileOutputStream — еще один хороший подход. Мы можем создать выходной поток для нового или существующего файла и записать байты в поток.
Не забудьте закрыть выходной поток, если вы не используете оператор try-with-resources.
byte[] bytes = "testData".getBytes();File file = new File("test.txt");try(FileOutputStream os = new FileOutputStream(file)) {os.write(bytes);}
3. FileUtils от Commons IO
Класс FileUtils имеет метод writeByteArrayToFile(), который записывает данные массива байтов в указанный файл. Он создает новый файл и его родительские каталоги, если они не существуют.
File file = new File("test.txt");byte[] bytes = "testData".getBytes();FileUtils.writeByteArrayToFile(file, bytes);
Включите Commons IO, используя последнюю зависимость maven в проекте.
<dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.11.0</version></dependency>
4. Файлы Гуавы
Подобно предыдущим решениям, метод Files.write() записывает байты в указанный файл. Обратите внимание, что этот метод перезаписывает файл содержимым массива байтов.
File file = new File("test.txt");byte[] bytes = "testData".getBytes();com.google.common.io.Files.write(bytes, file);
5. Заключение
В этом коротком руководстве по Java мы научились записывать содержимое массива байтов в файл, используя различные API Java, а также библиотеки Commons IO и Guave.