字节流
OutputStream
此抽象类是表示输出字节流的所有类的超类。输出流接受输出字节并将其发送到某个接收器。
常用实现类有:
DataOutputStream
BufferedOutputStream
FileOutputStream
BufferedOutputStream
带缓冲区的输出流,能够提高文件的写入效率
该类实现了缓冲的输出流。通过设置这样的输出流,应用程序可以将字节写入底层的输出流,而不必导致对每个写入的字节的底层系统的调用。
我们一般会使用该类将一个最底层的输出流包裹起来:
/**
* 创建一个新的缓冲输出流,以将数据写入指定的基础输出流。
* @param out the underlying output stream.
*/
public BufferedOutputStream(OutputStream out) {
this(out, 8192);
}
字符流
Writer
用于写入字符流的抽象类
常用实现类有如下:
BufferedWriter
FileWriter
OutputStreamWriter:可以将输出的字符流转换为字节流的输出形式
PrintWriter
字节流与字符流的区别
字节输入输出的弊端在于源数据是中文时,如果缓冲容器大小不等于当前字符集最大字节数时,读取会产生乱码。
例子:GBK一个汉字占用两个字节,此时缓冲容器大小如果为3,就只能读取该数据源的第一个字符,如下: