zoukankan      html  css  js  c++  java
  • Java数据流格式转换

    1 字节流
    InputStream                  ->FileInputStream
    OutputStream                 ->FileOutputStream


    2 . 字符流
    Reader -> BufferedReader     -> LineNumberReader 
           -> InputStreamReader  -> FileReader

    Writer -> BufferedWriter
           -> OutputStreamWriter -> FileWriter
    InputStreamReader   OutputStreamWriter  为转换流,FileReader FileWriter为其子类


    如何选用哪种流读取文件?
    IO流分为字符流 与 字节流,根据读写文件确定使用哪一种流,比如
    读取文件是否为文本:
         是:用字符流
        不是:用字节流

    何时使用转换流?
    1.
    如果使用非默认编码保存文件或者读取文件时,需要用到转换流,因为字节流的重载构造方法中有指定编码格式的参数,而FielReader 与 FileWriter 是默认编码的文本文件
    比如:

    当我们使用默认GBK编码保存文本时,下面2句代码其实是一样的效果,

    new OutputStreamWriter(new FileOutputStream("out.txt"))

    new FileWriter("out.txt")

    当要求保存为其他编码比如UTF-8时,就要这样写

    new OutputStreamWriter(new FileOutputStream("out.txt"),"UTF-8")

    而如果要读取一个UTF-8编码的文本文件时,同样的要用

    new InputStreamReader(new FileInputStream("in.txt"),"UTF-8");

    而不能用new FileWriter("in.txt")

    2.

    当文件是字节文件时:
         读取:提高效率用BufferedReader的独有快速方法时,需要转换。FileInputStream BufferedReader
         输出:提高效率一般用BufferedWriter缓存,需要转换。FileOutputStream  BufferedWriter
    当文件是字符流时:需要转换。
    计算机处理的是字节数据
              读取时:将字符转换为字节,FileReader  BufferedRead
              输出时:将字节转换为字符
    ,FileWriter BufferedWriter
    总之,不论是字节文件还是字符文件,提高效率一般会用转换流的。

  • 相关阅读:
    【今日CV 视觉论文速览】 19 Nov 2018
    【numpy求和】numpy.sum()求和
    【今日CV 视觉论文速览】16 Nov 2018
    【今日CV 视觉论文速览】15 Nov 2018
    poj 2454 Jersey Politics 随机化
    poj 3318 Matrix Multiplication 随机化算法
    hdu 3400 Line belt 三分法
    poj 3301 Texas Trip 三分法
    poj 2976 Dropping tests 0/1分数规划
    poj 3440 Coin Toss 概率问题
  • 原文地址:https://www.cnblogs.com/plxx/p/3995957.html
Copyright © 2011-2022 走看看