====== 面向字节 ======
==== OutputStream ====
输出一个比特,这个接口用户输出二进制数据,常常用在,文件,网络操作
* 核心方案:public abstract void write(int b) throws IOException;
==== FileOutputStream ====
打开文件,输出一个byte,输出byte数组
* 核心方法:private native void open0(String name, boolean append);
* 打开文件
* 核心方法:private native void close0() throws IOException;
* 关闭文件
* 核心方法:private native void write(int b, boolean append) throws IOException;性能低
* 单个byte写入
* 核心方法:private native void writeBytes(byte b[], int off, int len, boolean append);性能高
* 批量写入
====== 面向字符 ======
==== Writer ====
说明:定义了一个写char[]的行为,至于写到哪里去由不同类实现。写到文件就使用FileWriter,写到控制台就用PrintWriter等等。以FileWriter来说,他接收一个FileOutputStream类型的参数,依靠它才真正将数据写入文件。
PS:其实大部分操作底层还是转成字节,面向字符的接口大部分情况下只是对编程友好一些而已
* 核心方法:abstract public void write(char cbuf[], int off, int len) throws IOException;
==== OutputStreamWriter ====
* 核心成员:OutputStream out;
PS: FileWriter = new OutputStreamWriter(new FileOutputStream(fileName));
* 核心成员:StreamEncoder se;
对二进制,按不同字符集编码。构造函数 StreamEncoder(OutputStream out, Charset cs);
==== BufferedWriter ====
说明:包装Writer.write方法。尽可能减少系统调用次数,将多次写入合并成一次,提高性能
* 核心成员:char cb[]
* 缓存多次小数据。
* 核心成员:Writer out
* 缓存满了之后调用 out.write方法。将数据写出