Java InputStreamReader和OutputStreamWriter转换流的用法(附带实例)
Java 程序中,有时字节流和字符流之间可能也需要进行转换,JDK 中提供了可以将字节流转换为字符流的两个类,分别是 InputStreamReader 类和 OutputStreamWriter 类,它们被称之为转换流:
转换流的出现方便了对文件的读写,它在字符流与字节流之间架起了一座桥梁,使原本没有关联的两种流的操作能够进行转换,提高了程序的灵活性。
通过转换流进行读写数据的过程,如下图所示:

图 1 转换流示意图
图 1 中,程序向文件写入数据时将输出的字符流转变为字节流,程序从文件读取数据时将输入的字节流变为字符流,有效地提高了读写效率。
接下来,通过案例来演示转换流的使用。首先在当前目录新建一个文本文件 Conversion.txt,文件内容为“C语言中文网”。创建文件完成后,开始编写代码:
- OutputStreamWriter 类可以将一个字节输出流转换成字符输出流;
- InputStreamReade 类可以将一个字节输入流转换成字符输入流。
转换流的出现方便了对文件的读写,它在字符流与字节流之间架起了一座桥梁,使原本没有关联的两种流的操作能够进行转换,提高了程序的灵活性。
通过转换流进行读写数据的过程,如下图所示:

图 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语言中文网
程序中实现了字节流与字符流之间的互相转换,将字节流转换为字符流,从而实现直接对字符的读写。这里要注意,如果用字符流操作非文本文件,如操作视频文件,很有可能会造成部分数据丢失。相关文章
- Java转换流(InputStreamReader和OutputStreamWriter)的用法
- Java转换流:InputStreamReader和OutputStreamWriter
- Java InputStreamReader和OutputStreamWriter类的用法(附带实例)
- Java OutputStreamWriter和InputStreamReader的用法(附带实例)
- Java语句:Java空语句、复合语句和表达式语句
- Java switch case语句详解
- Java输出九九乘法表
- Java foreach语句的用法
- Java return语句
- Java continue语句详解