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
    总之,不论是字节文件还是字符文件,提高效率一般会用转换流的。

  • 相关阅读:
    关于Android的振动控制器(Vibrator)报SecurityException异常的问题
    Db4o结合Linq、Lambda表达式的简单示例
    递归选取扩展方法(RecursionSelect)的新重载形式
    解决Adobe Illustrator CS5启动后自动关闭的问题
    趋势畅想搭载android系统的智能数码相机
    Android SurfaceView 绘图及帧频处理方法修正
    MVP 模式实例解析
    .Net 自定义应用程序配置
    C# 类型基础
    [译]开闭原则
  • 原文地址:https://www.cnblogs.com/plxx/p/3995957.html
Copyright © 2011-2022 走看看