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. 一旦操作文本涉及到具体指定的编码表时, 必须使用转换流.

    参考资料

  • 相关阅读:
    Flush the AOS cache from code
    EntityConnectionStringBuilder 构造EF连接字符串
    AX中文转拼音
    AX2012 AOT中Web部署显示二级以上菜单
    clearCompanyCache
    AX2009 打印到PDF优化
    AX ODBC读取其他SQL数据库服务器数据
    AX2009报表打印固定长度Barcode条码
    Create Product Variant
    Rename AOT Object
  • 原文地址:https://www.cnblogs.com/linkworld/p/7514008.html
Copyright © 2011-2022 走看看