В 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/”