Начиная с Java 8, класс java.util.Base64 предоставляет удобные методы для кодирования и декодирования файлов в формат Base64 и из него. В этом руководстве рассматривается, как выполнять кодирование и декодирование Base64 текстовых и графических файлов.
1. Кодирование и декодирование текстового файла с помощью Base64
Кодирование текстового файла в формат Base64 включает следующие этапы:
- Считайте содержимое файла в массив байтов с помощью метода Files.readAllBytes().
- Используйте Base64.Encoder для кодирования массива байтов в другой массив байтов или строку в соответствии с требованиями.
- При желании обработайте любые исключения, которые могут возникнуть в ходе процесса.
Давайте рассмотрим пример. Этот пример сначала кодирует содержимое файла в base64, а затем декодирует содержимое, закодированное в base64, обратно в строку для проверки. Содержимое файла: «Это сообщение будет записано в файл».
File file = new File("c:/temp/test.txt");//encodingString encoded = Base64.getEncoder().encodeToString(Files.readAllBytes(file.toPath()));System.out.println(encoded);//decodingbyte[] decoded = Base64.getDecoder().decode(encoded);System.out.println(new String(decoded));
Вывод программы:
VGhpcyBtZXNzYWdlIHdpbGwgYmUgd3JpdHRlbiB0byBhIGZpbGUuDQo=This message will be written to a file.
2. Кодирование и декодирование файла изображения с помощью Base64
Кодирование файла изображения в формат Base64 во многом похоже на предыдущий пример текстового файла. Разница в том, что мы имеем дело только с массивами байтов, поскольку печать байтов изображения не имеет смысла.
В следующем примере мы используем Base64.getEncoder().encode() для чтения данных изображения в массив байтов, закодированный в base64. Мы можем преобразовать этот массив байтов в строку для хранения или передачи по сети.
Позже, при необходимости, мы сможем использовать закодированный массив байтов или строку для восстановления обратно в изображение.
File inImage = new File("c:/temp/test.jpg");File outImage = new File("c:/temp/test_restored.jpg");//encodingbyte[] encodedImageBytes = Base64.getEncoder().encode(Files.readAllBytes(inImage.toPath()));String encodedImageDataAsString = new String(encodedImageBytes); //Optionally, if needed//decodingbyte[] decodedImageBytes = Base64.getDecoder().decode(encodedImageBytes);Files.write(outImage.toPath(), decodedImageBytes);
Мы можем убедиться, что образ был успешно создан по указанному пути.
3. Заключение
В этом примере кодирования и декодирования файла Java Base64 обсуждаются методы и процедуры кодирования содержимого текстового файла или байтов двоичного файла и восстановления его в исходный файл. Мы можем использовать и настраивать код, приведенный в этом руководстве, в соответствии с нашими конкретными требованиями.