Java I/O流中的字节编码与解码
在 Java I/O 流中,字节编码和解码是指将二进制数据转换为字符数据或相反的过程。Java 提供了多种类和方法来执行此任务。
编码:字符数据到二进制数据
要将字符数据编码为二进制数据,可以使用 java.nio.charset
包中的 Charset
类。以下是编码示例:
Charset charset = Charset.forName("UTF-8");
byte[] bytes = charset.encode("Hello World").array();
该示例将字符串 “Hello World” 编码为 UTF-8 编码的字节数组。
解码:二进制数据到字符数据
要将二进制数据解码为字符数据,可以使用 java.nio.charset
包中的 CharsetDecoder
类。以下是解码示例:
CharsetDecoder decoder = charset.newDecoder();
String decodedString = decoder.decode(ByteBuffer.wrap(bytes)).toString();
该示例将 UTF-8 编码的字节数组解码为字符串 “Hello World”。
实战案例:读取和写入文本文件
以下代码演示了如何使用字节编码和解码来读取和写入文本文件:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.nio.charset.Charset;
public class Main {
public static void main(String[] args) {
// 编码:将字符串写入文本文件
try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("text.txt"), Charset.forName("UTF-8")))) {
writer.write("Hello World");
} catch (IOException e) {
e.printStackTrace();
}
// 解码:读取文本文件中的字符串
try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("text.txt"), Charset.forName("UTF-8")))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
此代码会将字符串 “Hello World” 以 UTF-8 编码写入 text.txt
文件,然后以 UTF-8 编码读取并输出文件中的内容。