因为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");