zoukankan      html  css  js  c++  java
  • IO流(四)__流的操作规律总结

    流的操作规律:
    1.明确源和目的
    源:InputStream Reader
    目的:OutputStream Writer
    2.明确数据是否是纯文本数据
    源:是纯文本:Reader
    否:InputStream

    目的:是纯文本 Writer
    否:OutputStream
    到这里就可以明确需求中具体要使用哪个体系
    3.名确具体的设备
    源设备:
    硬盘:File
    键盘:System.in
    内存:数组 缓存
    网络:Socket流
    目的设备:
    硬盘:File
    控制台:System.out
    内存:数组
    网络:Socket流
    4.是否需要其他额外功能
    (1)是否需要高效(缓冲区):是:及加上buffer
    (2)转换

    需求:1.复制一个文本文件。
    1.明确源和目的。
    源:InputStream Reader
    目的:OUtputStream Writer
    2.是否是纯文本
    是:Reader
    目的:Writer
    3.明确具体的设备
    源:
    硬盘: File
    目的:
    硬盘:File
    FileReader fr=new FileReader("a.txt")
    FileWriter fw=new FiileWriter("b.txt")
    4.需要额外功能
    需要高效
    BufferedReader bufr =new BufferedReader(new FileReader("a.txt"))
    BufferedWriter bufw =new BufferedReader(new FileReader("b.txt"))
    ======================================================
    需求2. 读取键盘录入信息,并写入到一个文件中
    1.明确源和目的。
    源:InputStream Reader
    目的:OUtputStream Writer
    2.是否是纯文本
    是:Reader
    目的:Writer
    3.明确识别
    源:
    键盘:System.in
    目的:
    硬盘:File
    InputStream in =System.in;
    FileWriter fw =new FileWriter("b.txt")
    这样做可以。将读取的字节数据转成字符串,再由字符流操作
    4.需要额外的功能吗?
    需要。转换。将字节流转成字符流因为明确的源是Reader,这样操作文本数据便捷
    所以要将已有字节流转成字符流。使用字节转字符的对象。InputStreamReader
    InputStreamReader isr=new InputStreamReader(System.in)
    FileWriter fw=new FileWriter("b.txt")

    还需要功能吗?
    需要:想高效
    BufferedReader bufr=new BufferedReader( new InputStreamReader(System.in))
    BufferedWriter bufw=new BufferedWriter( new FileWriter("b.txt"))
    =========================================
    需求3.经一个文本文件数据显示在控制台上
    1.明确源和目的。
    源:InputStream Reader
    目的:OUtputStream Writer
    2.是否是纯文本
    是:Reader
    目的:Writer
    3.明确具体设备
    源:
    硬盘:File
    目的:
    控制台:System.out
    FileReader fr =new FileReader("a.txt")
    OutputStream out=System.out
    4.需要额外功能吗?
    需要转换。
    FileReader fr =new FileReader("a.txt")
    OutputStreamWriter osw =new OutputStreamWriter(System.out)

    =================================================
    4.读取键盘录入数据,显示在控制台上
    1.明确源和目的。
    源:InputStream Reader
    目的:OUtputStream Writer
    2.是否是纯文本
    是:Reader
    目的:Writer
    3.明确设备
    源:
    键盘:System.in
    目的:
    控制台: System.out
    InputStream in=System.in;
    OutputStream out =System.out;
    4.明确额外功能
    需要转换,因为都是字节流,但是操作的确实文本数据。
    所以使用字符流操作起来干呢更加便捷。
    InputStreamReader isr =new InputStreamReader(System.in);
    OutputStreamReader osw =new OutStreamWriter(System.out)


    ======================================
    需求5:将一个中文字符串数据按照指定的编码表写入到一个文本文件中

    注意:既然需求中已经明确了指定的编码表动作
    那就不可以使用FileWriter,因为FileWriter内部是使用默认的本地码
    OutputStreamWriter接收一个字节输出流对象,既然操作文件,那么使用FileOutputStream

    什么时候使用转换流?
    1.源或者目的对应的设备是字节流。但是操作的确实文本数据,可以使用转换作为桥梁提高对文本操作的便捷
    2.一旦操作文本设计具体的指定编码表时,必须使用转换流。

  • 相关阅读:
    Associative Embedding: Detection and Grouping loss
    Stacked Hourglass Networks 以及 PyTorch 实现
    论文笔记Stacked Hourglass Networks
    LiveQing私有云端直播点播流媒体服务-功能一张图
    监控实时直播的四分屏的前端展示
    LiveQing视频流媒体开放平台利用 webpack 打包压缩后端代码
    安防监控直播中无插件web直播方案中实现快照抓取的功能
    RTSP-Onvif摄像机web直播遇到的时间戳问题导致的卡顿解决方案
    H5实现视频监控网络直播时前端自动适配
    H5实现无插件视频监控按需直播
  • 原文地址:https://www.cnblogs.com/xiangkejin/p/5939888.html
Copyright © 2011-2022 走看看