转换流的前世今生

    技术2025-04-11  10

    转换流----OutputStreamWriter、InputStreamReader

    文章目录

    转换流----OutputStreamWriter、InputStreamReader前言图解案例演示将字节输出流变为字符输出流对象运行结果将字节输入流变为字符输入流运行结果 总结

    前言

    在Java的IO中,实际上分为两大类为字节流和字符流,但是除了这两大类之外,还存在一组字节字符流的转换类。

    OutputStreamWriter: 是Writer类的子类,FileWriter继承于此类,将输出的字符流变为字节流输出到文件,即将一个字符流的输出对象变为字节流输出对象,构造方法需传递OutputStream字节输出流实例化对象。

    InputStreamReader: 是Reader类的子类,FileReader继承于此类,将输入的字节流变为字符流输入到程序,即将一个字节流的输入对象变为字符流输入对象,构造方法需传递InputStream字节输入流实例化对象。

    图解

    案例演示

    将字节输出流变为字符输出流对象
    package chapter_twelve; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStreamWriter; import java.io.Writer; public class OutputStreamWriterDemo01 { public static void main(String[] args) throws Exception{ File file = new File("D:" + File.separator + "test.txt"); //实例化文件类对象 Writer writer = //实例化转换流对象,将输出的字符流转化为字节流输出到文件 new OutputStreamWriter(new FileOutputStream(file)); String string = "Hello World!!!\r\nGao Li Wei!!!"; //编辑字符串 writer.write(string); //将字符流数据转换为字节数据写入到文件 writer.close(); //关闭输出流 } }
    运行结果

    将字节输入流变为字符输入流
    package chapter_twelve; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.io.Reader; public class InputStreamReaderDemo01 { public static void main(String[] args) throws Exception { File file = new File("D:" + File.separator + "test.txt"); //实例化文件类对象file Reader reader = //实例化输入转换流对象,将从文件读取的字节流流转化为字符流 new InputStreamReader(new FileInputStream(file)); char[] chars = new char[1024]; //定义接收数据的字符数组 int len = reader.read(chars); //读取数据,并返回读取数据的长度 System.out.println(new String(chars,0,len)); //输出数据 reader.close(); //关闭转换输入流 } }
    运行结果
    Hello World!!! Gao Li Wei!!!

    总结

    实际上不管在程序中如何操作,在文件的读写时最终都是以字节的方式进行操作的,字符流只是辅助开发人员进行更方便开发的一种方式,小伙伴们可以根据具体需求使用哦!

    Processed: 0.012, SQL: 9