No.16 转换流InputStreamReader/OutputStreamWriter

简介

在java.io除了字节流/字符流之外,还存在一组字节流-字符流的转换类。1.OutputStreamWriter:是Writer的子类,将输出的字符流变为字节流,即将一个字符流的输出对象变为字节流输出对象。
2.InputStreamReader:是Reader的子类,将输入的字节流变为字符流,即将一个字节流的输入对象变为字符流的输入对象。

我们在平时在进行平时文件操作的时候,比如我们聊微信的时候我们写进去的肯定是字符,那么如果你需要将内容发送给对方,在网络中传输的时候确是字节数据。因此转换流在网络通信中应用就应运而生了。

写入数据-->内存中的字符数据-->字符流-->OutputStreamWriter-->字节流-->网络传输(或文件保存)
读取数据<--内存中的字符数据<--字符流<--InputStreamReader<--字节流<--网络传输(或文件保存)

3.两者分别接收一个InputStream和OutputStream的类或子类对象作为参数。

示例:

    InputStreamReader ir = null;
    OutputStreamWriter os = null;
    
    String sName = "d://text.txt";
    String dName = "d://1.txt";
    
    try {
        ir = new InputStreamReader(new FileInputStream(sName));
        os = new OutputStreamWriter(new FileOutputStream(dName), "UTF-8");
        
        int len = 0;
        while((len = ir.read()) != -1){
            os.write(len);
            os.flush();
        }
        ir.close();
        os.close();
        
    } catch (Exception e) {
        e.printStackTrace();
    }
  • 查阅文档可以知道:
    FileOutputStream是OutputStream 的直接子类;
    FileInputStream也是InputStream的直接子类;

    FileWriter不直接是Writer的子类,而是OutputStreamWriter的子类,
    FileReader不直接是Reader的子类,是InputStreamReader的子类

    从这两个类的继承关系也可发现,不管是使用字节流还是字符流实际上最终都是以字节的形式操作输入/输出流的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在经过一次没有准备的面试后,发现自己虽然写了两年的android代码,基础知识却忘的差不多了。这是程序员的大忌,没...
    猿来如痴阅读 2,919评论 3 10
  • 概述: 1、IO流:即Input Output的缩写。 2、特点:1)IO流用来处理设备间的数据传输。2)Java...
    玉圣阅读 1,280评论 0 3
  • 一、IO流整体结构图 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称...
    慕凌峰阅读 1,257评论 0 12
  • Java IO整理 参考文献一:http://www.cnblogs.com/lich/tag/java%20IO...
    数独题阅读 544评论 0 0
  • 有一种鸟死死的盯着虫子,没日没夜的啄呀,啄!乐在其中,呵!我多伟大!我多勤劳!鄙夷的看着园艺工,你是个嘛!有一天,...
    瑞雪红花阅读 318评论 0 0