В Java мы можем использовать новую строку (байты, стандартные наборы символов. UTF_8)
для преобразования байта[] в строку.
import java.nio.charset.StandardCharsets; // string to byte[] byte[] bytes = "hello".getBytes(); // byte[] to string String s = new String(bytes, StandardCharsets.UTF_8);
Для текстовых или символьных данных мы используем новую строку (байты, стандартные наборы символов. UTF_8)
для преобразования байта[]
в Строка
. Однако в случаях, когда байт[]
содержит двоичные данные, такие как изображение или другие нетекстовые данные, рекомендуется преобразовать байт[]
в кодированную строку Base64 .
// file to byte[] byte[] bytes = Files.readAllBytes(Paths.get("/path/image.png")); // Java 8 - Base64 class, finally. // byte[] to base64 encoded string String s = Base64.getEncoder().encodeToString(bytes); System.out.println(s); // base64 encoded string to byte[] byte[] decode = Base64.getDecoder().decode(s);
Резюме.
- Для текстовых данных
байт[]
мы используемновую строку (байты, стандартные наборы символов. UTF_8)
, UTF-8 для кодировки символов. - Для двоичных данных
байт[]
мы используем двоичную кодировку Base64.
1. Преобразовать байт[] в строку (текстовые данные)
Приведенный ниже пример преобразует строку в массив байтов и наоборот.
package com.mkyong.io.howto; import java.nio.charset.StandardCharsets; public class ByteToString { public static void main(String[] args) { String example = "This is raw text!"; // string to byte[] byte[] bytes = example.getBytes(); System.out.println("Text : " + example); System.out.println("Text [Byte Format] : " + bytes); // no, don't do this, it returns the address of the object in memory System.out.println("Text [Byte Format] toString() : " + bytes.toString()); // convert byte[] to string String s = new String(bytes, StandardCharsets.UTF_8); System.out.println("Output : " + s); // UnsupportedEncodingException // String s1 = new String(bytes, "UTF_8"); } }
Выход
Text : This is raw text! Text [Byte Format] : [B@58372a00 Text [Byte Format] toString() : [B@58372a00 Output : This is raw text!
2. Преобразовать байт[] в строку (двоичные данные)
Приведенный ниже пример преобразования изображения phone.png
в байт[]
и использует класс Java 8 Base64 для преобразования байта[]
в строку в кодировке Base64. Позже мы преобразуем строку в кодировке Base64 обратно в исходный байт[]
и сохраним ее в другое изображение с именем phone2.png
.
package com.mkyong.io.howto; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.util.Base64; public class ByteToString2 { public static void main(String[] args) { String filepath = "/home/mkyong/phone.png"; try { byte[] bytes = Files.readAllBytes(Paths.get(filepath)); // readable string that encoded in base64, easy transfer as a string // byte[] to base64 string String s = Base64.getEncoder().encodeToString(bytes); System.out.println(s); // base64 string to byte[] byte[] decode = Base64.getDecoder().decode(s); Files.write(Paths.get("/home/mkyong/phone2.png"), decode); } catch (IOException e) { e.printStackTrace(); } } }
Выход
bh5aLyZALN4othXL2mByHo1aZA5ts5k/uw/sc7DBngGY......
Скачать Исходный Код
$клон git $клон git
$cd java-ввод-вывод
Рекомендации
Оригинал: “https://mkyong.com/java/how-do-convert-byte-array-to-string-in-java/”