Java 中IO流字符流详解及实例
Java 中的 IO 流字符流是指 Java 语言中对基本输入/输出流的扩展,用于处理字符流。字符流是指将文本文件或字符串按照某种编码方案(如 UTF-8、UTF-16BE、GBK 等)序列化为字节序列的结果。
1. 字符处理
在 Java 中,字符是 16 位无符号整数,是 Unicode 编码的双字节编码。文件是由 byte 序列组成的数据序列。文本文件是文本(char)序列按照某种编码方案序列化为 byte 的存储结果。
2. 字符流的基本实现
字符流(Reader、Writer)是操作文本、文本文件的接口。它是一次处理一个字符,字符的底层仍然是基本的字节序列。字符流的基本实现包括:
* InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。
* OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的 charset 将要写入流中的字符编码成字节。
3. 文件读写流
文件读写流是文件读写操作的基本实现。FileReader 和 FileWriter 是读取字符文件和写入字符文件的便捷类。它们可以直接读取或写入文本文件,不需要手动处理字符编码。
4. 字符流的过滤器
字符流的过滤器是对字符流的扩展,可以实现更多的功能。常见的字符流过滤器包括:
* BufferedReader:一次读一行
* BufferedWriter/PrintWriter:一次写一行
这些过滤器可以提高字符流的处理效率和灵活性。
5. 示例代码
下面是一个使用 InputStreamReader 和 OutputStreamWriter 读取和写入文本文件的示例代码:
```java
public class ISReaderAndOSWriter {
public static void main(String[] args) throws IOException {
FileInputStream in = new FileInputStream("F:\\javaio\\java.txt");
FileOutputStream out = new FileOutputStream("F:\\javaio\\java1.txt");
InputStreamReader isr = new InputStreamReader(in, "gbk");
OutputStreamWriter osw = new OutputStreamWriter(out, "gbk");
int c;
char[] buf = new char[8 * 1024];
while ((c = isr.read(buf, 0, buf.length)) != -1) {
String s = new String(buf, 0, c);
osw.write(s);
}
isr.close();
osw.close();
}
}
```
这个示例代码展示了如何使用 InputStreamReader 和 OutputStreamWriter 读取和写入文本文件,并使用指定的 charset 将字符编码成字节。
6. 小结
Java 中的 IO 流字符流是处理文本文件和字符串的基本接口。通过使用字符流,可以实现高效的文本处理和文件读写操作。同时,字符流的过滤器也提供了更多的功能和灵活性。