1.缓存流的引入
以介质是硬盘为例,字节流和字符流,在每一次读写的时候,都会直接访问硬盘,如果读写的频率比较高,其性能就会比较差;
因此,引入缓存流,缓存流在读取数据的时候,会一次性读取较多的数据到缓存中去,以后的每一次读取都是在缓存区中读取,直到缓存区的数据读取完毕,再到硬盘中读取。
缓存流在写入数据的时候,会先把数据写入到缓存区,直到缓存区达到一定的数量,才把这些数据一起写入到硬盘中。按照这种操作,就不会想字符流或字节流那样没写一个自己都访问硬盘。
缓存流的好处:CPU与缓存的交互速度很快;提高效率。
例如:
@Test
public void test9() throws Exception {
// //fout为低级流
// OutputStream fout = new FileOutputStream("D:/A流/b.txt");
// //bout为缓存流,缓存流装饰了低级流fout,bout读写字节先写缓存里,在写文件里
// BufferedOutputStream bout = new BufferedOutputStream(fout);
// //objout同时具备了缓存流和低级流的作用
// ObjectOutputStream objout = new ObjectOutputStream(bout);
ObjectOutputStream objout = new ObjectOutputStream(
new BufferedOutputStream(
new FileOutputStream("D:/A流/b.txt")
)
);
objout.writeObject("yjn");//写到缓存里面
objout.flush();//在刷新的时候是写到了设备里面
objout.close();//释放流的资源,流用完之后要关掉,否则很浪费资源
}
@Test
public void test10() throws Exception {
// InputStream aa = new FileInputStream("D:/A流/b.txt");
ObjectInputStream objn = new ObjectInputStream(
new BufferedInputStream(
new FileInputStream("D:/A流/b.txt")
)
);
System.out.println(objn.readObject());
objn.close();//释放流的资源,流用完之后要关掉,否则很浪费资源
}