处理流
文章目录
- 处理流
- 基础IO流的框架
- 缓冲流
基础IO流的框架
抽象基类 | 4个节点流 | 4个缓冲流(处理流的一种) |
---|---|---|
InputStream | FileInputStream | BufferedInputStream |
OutputStream | FileOutputStream | BufferedOutputStream |
Reader | FileReader | BufferedReader |
Writer | FileWriter | BUfferedWriter |
缓冲流
-
为了提高数据读写的速度
,Java API提供了带缓冲功能的流类:缓冲流。 -
缓冲流要“套接”在相应的节点流之上,根据数据操作单位可以把缓冲流分为:
- 字节缓冲流:
BufferedInputStream
,BufferedOutputStream
- 字符缓冲流:
BufferedReader
,BufferedWriter
- 字节缓冲流:
-
缓冲流的基本原理:在创建流对象时,内部会创建一个缓冲区数组(缺省使用
8192个字节(8Kb)
的缓冲区),通过缓冲区读写,减少系统IO次数,从而提高读写的效率。
缓冲流的作用 :提升文件读写的效率
public void test14() throws IOException {//使用BufferedInputStream/BufferedOutputStream复制一个图片//创建相关的File类的对象File srcFile = new File("test.png");File destFile = new File("test_copy1.png");//创建相关的字节流、缓冲流FileInputStream fileInputStream = new FileInputStream(srcFile);FileOutputStream fileOutputStream = new FileOutputStream(destFile);BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(destFile);//数据的读入与写出byte [] buffer = new byte[1024]; //1kbint len; //记录读入到buffer的字节的个数while((len = bufferedInputStream.read(buffer)) != -1){bufferedOutputStream.write(buffer,0,len);}System.out.println("复制成功");//关闭资源//外层的流的关闭(外层流的关闭会自动对内层流的进行关闭)bufferedInputStream.close();bufferedOutputStream.close();//内层流的关闭fileInputStream.close();fileOutputStream.close();}