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. 是否需要额外的功能

      • 需要高效(缓冲区), 就加上 buffer
      • 需要转换, 就将字节流转换为字符流
    // 示例: 将一个中文字符串数据按照指定的编码表写入到一个文本文件中.
    
        /* 
         * 思路:
         *    1. 目的: OutputStream, Writer
         *    2. 是纯文本数据: Writer
         *    3. 设备: 硬盘, File
         *        FileWriter fw = new FileWriter("a.txt");
         *        fw.write("你好");
         *        fw.close();
         * 注意:
         *     既然需求中已经明确了指定编码表的动作, 那就不可以使用 FileWriter, 因为 FileWriter 内部
         *     使用的是默认的本地编码表.
         *     因此,只能使用其父类, OutputStreamWriter, 转换流
         *     OutputStreamWriter 的构造方法中必须带有一个字节输出流对象, 既然是操作文件,
         *     那么该对象应该是 FileOutputStream.
         *     
         *  OutputStreamWriter osw = 
         *         new OutputStreamWriter(new FileOutputStream("a.txt"), charsetName(编码表));
         *     osw.write("你好");
         *     osw.close();
         */
    
    
    • 什么时候使用转换流呢?
      1. 源或者目的对应的设备是字节流, 但是操作的却是文本数据, 可以使用转换流作为桥梁
        提高对文本操作的便捷
      2. 一旦操作文本涉及到具体指定的编码表时, 必须使用转换流.

    参考资料

  • 相关阅读:
    Saltstack module apache 详解
    Saltstack module ip 详解
    Saltstack module iosconfig 详解
    Saltstack module introspect 详解
    Saltstack module inspector 详解
    Saltstack module ini 详解
    Saltstack module incron 详解
    Modbus 指令 RS485指令规则
    停车系统对接第三方在线支付平台(二)
    停车系统对接第三方在线支付平台
  • 原文地址:https://www.cnblogs.com/linkworld/p/7514008.html
Copyright © 2011-2022 走看看