首页 > 编程笔记 > Java笔记 阅读:6

Java InputStreamReader和OutputStreamWriter转换流的用法(附带实例)

Java 程序中,有时字节流和字符流之间可能也需要进行转换,JDK 中提供了可以将字节流转换为字符流的两个类,分别是 InputStreamReader 类和 OutputStreamWriter 类,它们被称之为转换流:

转换流的出现方便了对文件的读写,它在字符流与字节流之间架起了一座桥梁,使原本没有关联的两种流的操作能够进行转换,提高了程序的灵活性。

通过转换流进行读写数据的过程,如下图所示:


图 1 转换流示意图

图 1 中,程序向文件写入数据时将输出的字符流转变为字节流,程序从文件读取数据时将输入的字节流变为字符流,有效地提高了读写效率。

接下来,通过案例来演示转换流的使用。首先在当前目录新建一个文本文件 Conversion.txt,文件内容为“C语言中文网”。创建文件完成后,开始编写代码:
import java.io.*;

public class Demo {
    public static void main(String[] args) throws IOException {
        // 创建字节输入流
        FileInputStream input = new FileInputStream("Conversion.txt");
        // 将字节输入流转换为字符输入流
        InputStreamReader inputReader = new InputStreamReader(input);
        // 创建字节输出流
        FileOutputStream output = new FileOutputStream("target.txt");
        // 将字节输出流转换为字符输出流
        OutputStreamWriter outputWriter = new OutputStreamWriter(output);
        int str;
        while ((str = inputReader.read()) != -1) {
            outputWriter.write(str);
        }
        outputWriter.close();
        inputReader.close();
    }
}
程序运行结束后,会在当前目录生成一个 target.txt 文件,文件的内容为:

C语言中文网

程序中实现了字节流与字符流之间的互相转换,将字节流转换为字符流,从而实现直接对字符的读写。这里要注意,如果用字符流操作非文本文件,如操作视频文件,很有可能会造成部分数据丢失。

相关文章