更新时间:2022-06-15 来源:黑马程序员 浏览量:
I/O流可分为字节流和字符流,有时字节流和字符流之间也需要进行转换。在JDK中,提供了两个类用于实现将字节流转换为字符流,它们分别是InputStreamReader和OutputStream Writer。InputStreamReader 是Reader的子类,它可以将一个字节输入流转换成字符输入流,方便直接读取字符。OutputStreamWriter是Writer的子类,它可以将一个字节输出流转换成字符输出流,方便直接写入字符。通过转换流进行数据读写的过程如图。
接下来通过一个案例来学习如何将字节流转为字符流,为了提高读写效率,可以通过BufferedReader和BufferedWriter来实现转换工作,具体代码如下。
Examplel1.java
import java.io.*; public class Examplell { public static void main (String[] args) throws Exception { //1.创建字节输人流对象,获取源文件 FileInputStream in =new FileInputStream("reader.txt"); //将字节输入流对象转换成字符输入流对象 InputStreamReader isr=new InputStreamReader (in); //创建字符输入缓冲流对象 BufferedReader br =new BufferedReader (isr); //2.创建字节输出流对象,指定目标文件 FileOutputStream out =new FileOutputStream("writer.txt"); //将字节输出流对象转换成字符输出流对象 OutputStreamWriter osw =new OutputStreamWriter (out); //创建字符输出缓冲流对象 BufferedWriter bw=new BufferedWriter(osw); //定义一个字符串变量 String line =null; //通过循环判断是否读到文件末尾 while ((line =br.readLine()) !=null) { //输出读取到的文件 bw.write(line); bw.newLine(); } //关闭流 br.close(); bw.close(); } }
程序运行结束后,同样会将源文件“reader.txt“中的内容拷员到目标文件“writer.1xt”中,结果如图所示。