====== 面向字节 ====== ==== 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方法。将数据写出