怎么使用字节缓冲流

IO流文本、视频的复制以及缓冲流的使用

缓冲流的作用:
缓冲流可以提高读取和写入的速度

创建缓冲流:
创建缓冲流之前需要先创建内层的流(节点流),对于字节缓冲流BufferedInputStream/BufferedOutputStream来说,内层流可以是FileInputStream/FileOutputStream(前后一一对应),创建的源码如下

//创建文件
File srcFile = new File("D:\\plm.jpg");
File destFIle = new File("D:\\plm3.jpg");
//创建节点流
FileInputStream fis = new FileInputStream(srcFile);
FileOutputStream fos = new FileOutputStream(destFIle);
//创建处理流(缓冲流)
BufferedInputStream bis = new BufferedInputStream(fis);
BufferedOutputStream bos = new BufferedOutputStream(fos);

关闭字节缓冲流同时也关闭节点流:
关闭流的时候,关闭外层处理流的同时内层的节点流也会被自动关闭。缓冲流是一种处理流,是包在字节输入、输出流的外层的。关闭流的时候只需要关闭处理流就OK了

bos.close();
bis.close();

关于刷新缓冲区:
刷新缓冲区我们通常是手动调用BufferedOutputStream的.flush()方法。这个方法的作用就是把缓冲区中的数据写出去,也可以不调用这个方法,等待缓冲区满了之后自动刷新

bos.flush();

复制:
的时候如果是文件,可以用字节流和字符流,都是不会出现乱码的,因为整个都复制过去了,汉字也没有出现劈成两半的情况。但是对于非文本文件的复制就只能用字节流,不然会出问题。如果只是读取一部分的话,对于文本文件用字符进行读写,对于视频和图片就用字节流。

简单来记忆的话就是对于文本类型的文件使用字符流对于非文本类型的文件使用字节流。以前的博客里我讲到过,对于视频、图片等底层是二进制实现的文件用字节流,对于底层含有汉字的文本文件使用字符流(不会出现把一个汉字分成几瓣的情况)

你可能感兴趣的:(IO流,缓冲流,java)