Преобразование файла в byte[] на Java — Files.readAllBytes

Программа на Java для преобразования файла в массив байт и наоборот.

Для понимания этого примера нужно знать следующие темы Java:

  • Класс java.io.File

  • Массивы в Java

Перед преобразованием файла в массив байт и обратно, предположим, что у нас в папке src есть файл test.txt.

Содержимое test.txt:

This is a
Test file.

Пример 1: преобразование файла в byte[]

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Arrays;

public class FileByte {

    public static void main(String[] args) {

        String path = System.getProperty("user.dir") + "\\src\\test.txt";

        try {
            byte[] encoded = Files.readAllBytes(Paths.get(path));
            System.out.println(Arrays.toString(encoded));
        } catch (IOException e) {

        }
    }
}

Вывод:

[84, 104, 105, 115, 32, 105, 115, 32, 97, 13, 10, 84, 101, 115, 116, 32, 102, 105, 108, 101, 46]

В этой программе мы храним путь к файлу в переменной path.

Затем внутри блока try мы читаем все байты из заданного пути с помощью метода readAllBytes().

После этого используем метод toString() класса Arrays для вывода массива байт.

Поскольку readAllBytes() может выбросить IOException, в программе использован блок try-catch.

Пример 2: преобразование byte[] в файл

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

public class ByteFile {

    public static void main(String[] args) {

        String path = System.getProperty("user.dir") + "\\src\\test.txt";
        String finalPath = System.getProperty("user.dir") + "\\src\\final.txt";

        try {
            byte[] encoded = Files.readAllBytes(Paths.get(path));
            Files.write(Paths.get(finalPath), encoded);
        } catch (IOException e) {

        }
    }
}

Когда мы запустим программу, содержимое test.txt будет скопировано в final.txt.

В этой программе мы использовали тот же способ, что и в примере 1, чтобы прочитать все байты из файла, хранящегося в path. Эти байты сохраняются в массив encoded.

Также у нас есть finalPath, куда нужно записать байты.

Затем мы просто используем метод write() класса Files для записи массива байт encoded в файл по пути finalPath.