82、java的IO操作-字节缓冲流

来源:互联网 发布:weui 开发案例 源码 编辑:程序博客网 时间:2024/06/05 07:19
一、字节缓冲流字节流一次读写一个数组的速度明显比一次读写一个字节的速度快很多,这是加入了数组这样的缓冲区效果,java本身在设计的时候,也考虑到了这样的设计思想(装饰设计模式后面讲解),所以提供了字节缓冲区流二、分类1、字节缓冲输出流BufferedOutputStream2、字节缓冲输入流BufferedInputStream注意:构造方法可以指定缓冲区的大小,但是我们一般用不上,因为默认缓冲区大小就足够了。三、为什么不传递一个具体的文件或者文件路径,而是传递一个OutputStream或者IntputStream对象呢? 原因很简单,字节缓冲区流仅仅提供缓冲区,为高效而设计的。但是呢,真正的读写操作还得靠基本的流对象实现。四、案例public class BufferedOutputStreamDemo {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 class BufferedInputStreamDemo {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();}}