用户工具


因为input/ouput是对称的,故只介绍其一

字节流

  • OutputStream 抽象类
        * void write(int b)往流中写一个字节b
        * void write(byte b[])往流中写一个字节数组b
        * void write(byte b[],int off,int len)把字节数组b中从下标off开始,长度为len的字节

  • FileOutputStream 继承自OutputStream

        * 按字节操作,直接写入磁盘,没有缓冲,效率极低。
        * FileOutputStream dos = new FileOutputStream("file_path")
        * void write(int b)往流中写一个字节b
        * void write(byte b[])往流中写一个字节数组b
        * void write(byte b[],int off,int len)把字节数组b中从下标off开始,长度为len的字节

  • DataOutputStream 继承自FilterOutputStream,对类型数据(int,float,double等)再一次做了封装

        * 按类型操作,直接写入磁盘,没有缓冲,效率比FileOutputStream稍高(按类型比按字节每次会多
    操作几个字节)
        * DataOutputStream dos = new DataOutputStream(new FileOutputStream("file_path"))
        * void writeInt(int a)
        * void writeFloat(float f)

  • BufferedOutputStream 【【】】继承自FilterOutputStream

        * write方法FileOutputStream类似,但是不会每次写出缓冲区,而是等缓冲区满了一次写出,
    对大文件效率非常高
        * BufferedOutputStream dos = new BufferedOutputStream(new FileOutputStream("file_path"))
        * void write(int b)往流中写一个字节b
        * void write(byte b[])往流中写一个字节数组b
        * void write(byte b[],int off,int len)把字节数组b中从下标off开始,长度为len的字节

效率对比

  * FileOutputStream:write()一滴一滴的倒
    * FileOutputStream dos = new FileOutputStream("file_path")
  * DataOutputStream:writeXxx()一瓢一瓢的倒
    * DataOutputStream dos = new DataOutputStream(new FileOutputStream("file_path"))
  * BufferedOutputStream:write()先一瓢一瓢倒到一个桶里,再从桶里倒到缸里
    * BufferedOutputStream dos = new BufferedOutputStream(new FileOutputStream("file_path"))

字符流

  • Reader:(抽象类)一次读取一个字符
    • Writer: (抽象类)一次写入一个字符
  • InputStreamReader:完成byte流到char流,按编码解析
    • InputStreamReader i = new InputStreamReader(new FileInputStream(“”),“utf-8”);要给出当前文件编码,默认是项目编码
  • OutputStreamReader:完成char流到byte流,按编码解析
    • void write(int b)往流中写一个字符
    • void write(char b[])往流中写一个字符数组b
    • void write(char b[],int off,int len)把字符数组b中从下标off开始,长度为len的字节
  • FileReader 貌似和InputStreamReader 效果一样,

    而且不能指定文件编码

  • BufferedReader 【【】】
    • BufferedReader i = new BufferedReader(new InputStreamReader(new FileInputStream(“”)));
    • i.readLine(); # 读取一行
  • PrintWriter 【【】】 一般和BufferedReader一起用。BufferedReader读,PrintWriter写(PrintWriter比 BufferedWriter 操作方便一些)
    • 初始化的时候可以设置autoFlush
    • 写入时使用print(String),println(String)函数即可
    • PrintWriter i = new PrintWriter(“”);
    • i.print(“hello”);
    • i.println(“world”);