共计 1160 个字符,预计需要花费 3 分钟才能阅读完成。
1、字节缓冲流
字节流一次读写一个数组的速度明显比一次读写一个字节的速度快很多,这是加入了数组这样的缓冲区效果,java 本身在设计的时候,也考虑到了这样的设计思想 (装饰设计模式后面讲解),所以提供了字节缓冲区流
字节缓冲输出流
BufferedOutputStream
字节缓冲输入流
BufferedInputStream
这种类被称为:缓冲区类 (高效类)
构造方法可以指定缓冲区的大小,但是我们一般用不上,因为默认缓冲区大小就足够了 。
缓冲流写数据
public static void main(String[] args) throws IOException {// 构造器
// BufferedOutputStream(OutputStream out)
// 创建基本的字节输出流对象
// FileOutputStream fos = new FileOutputStream("bos.txt");
// 字节缓冲输出流对字节输出流对象进行包装
// BufferedOutputStream bos = new BufferedOutputStream(fos);
// 简单写法
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("bos.txt"));
// 写数据
bos.write("hello".getBytes());
// 释放资源
bos.close();}
缓冲流读数据
public static void main(String[] args) throws IOException {// BufferedInputStream(InputStream in)
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("bos.txt"));
// 读取数据, 一次读一个字节
// int by = 0;
// while ((by = bis.read()) != -1) {
// System.out.print((char) by);
// }
// System.out.println("---------");
// 读取数据,一次读一个字节数组
byte[] bys = new byte[1024];
int len = 0;
while ((len = bis.read(bys)) != -1) {System.out.print(new String(bys, 0, len));
}
// 释放资源
bis.close();}
为什么不传递一个具体的文件或者文件路径,而是传递一个 OutputStream 对象呢?
原因很简单,字节缓冲区流仅仅提供缓冲区,为高效而设计的。但是呢,真正的读写操作还得靠基本的流对象实现。
2、字节缓冲流复制数据练习
把 d:\a.txt 内容复制到当前项目目录下的 b.txt 中
正文完
星哥玩云-微信公众号