java.io包中提供了FilterInputStream和FilterOutputStream类分别对其他输入输出流进行特殊的处理,它们在
  * 读/写数据的同时还能够对数据进行特殊的处理。另外它们还提供了同步机制,是的某一时刻之后一个线程可以访问输入/输出流。
  * FilterInputStream/FilterOutputStream都是抽象类。
  * FilterInputStream有三个子类:BufferedInputStream、DataInputStream、PushbackInputStream
  * FilterOutputStream也有三个子类:BufferedOutputStream、DataOutoutStream、PrintStream
  *
  * 使用过滤字节流的时候,必须先制定节点流对象处理底层的数据,然后把节点流对象作为过滤流对象的实参使用。即把过滤流对象连接到某个输入/输出节点流对象上如下:
  * FileInputStream fis = new FileInputStream(new File("c:/abc.txt"));
  * DataInputSream dis = new DataInputStream(fis);

 

一、BufferedInputStream/BufferedOutputStream


  * BufferedInputStream/BufferedOutputStream 是缓冲字节流,它引入了针对内存缓冲区的操作,从而提高了读写数据的效率。
  * 缓冲区的默认大小为32字节,也可以指定缓冲区的大小。
  * 相应的构造的方法
  * BufferedInputStream(InputStream in) 这里的in只要是继承自InputSream的对象都可以作为参数
  * BufferedInputStream(InputStream in,int size)
  * BufferedOutputStream与上面的对应。

Demo:使用BufferedInputStream/BufferdeOutputStream完成文件的复制。

 1 package com.tai.io;
 2 
 3 import java.io.BufferedInputStream;
 4 import java.io.BufferedOutputStream;
 5 import java.io.File;
 6 import java.io.FileInputStream;
 7 import java.io.FileOutputStream;
 8 import java.io.IOException;
 9 
10 public class BufferedInputStreamDemo
11 {
12     /**
13      * java.io包中提供了FilterInputStream和FilterOutputStream类分别对其他输入输出流进行特殊的处理,它们在
14      * 读/写数据的同时还能够对数据进行特殊的处理。另外它们还提供了同步机制,是的某一时刻之后一个线程可以访问输入/输出流。
15      * FilterInputStream/FilterOutputStream都是抽象类。
16      * FilterInputStream有三个子类:BufferedInputStream、DataInputStream、PushbackInputStream
17      * FilterOutputStream也有三个子类:BufferedOutputStream、DataOutoutStream、PrintStream
18      * 
19      * 使用过滤字节流的时候,必须先制定节点流对象处理底层的数据,然后把节点流对象作为过滤流对象的实参使用。即把过滤流对象连接到某个输入/输出节点流对象上
20      * 
21      * FileInputStream fis = new FileInputStream(new File("c:/abc.txt"));
22      * DataInputSream dis = new DataInputStream(fis);
23      * BufferedInputStream/BufferedOutputStream 是缓冲字节流,它引入了针对内存缓冲区的操作,从而提高了读写数据的效率。
24      * 缓冲区的默认大小为32字节,也可以指定缓冲区的大小。
25      * 相应的构造的方法
26      * BufferedInputStream(InputStream in) 这里的in只要是继承自InputSream的对象都可以作为参数
27      * BufferedInputStream(InputStream in,int size)
28      * BufferedOutputStream与上面的对应。
29      */
30     public static void main(String[] args) throws IOException
31     {
32         FileInputStream fis = new FileInputStream(new File("c:/曲婉婷 - 没有什么不同 [mqms].mp3"));
33         BufferedInputStream bis = new BufferedInputStream(fis,1024);
34         FileOutputStream fos = new FileOutputStream(new File("c:/没有什么不同.mp3"));
35         BufferedOutputStream bos = new BufferedOutputStream(fos,1024);
36         
37         byte[] buffer = new byte[1024];
38         int len =0;
39         while(-1!=(len=bis.read(buffer,0,1024)))
40         {
41             //将buffer中从fis读取来的数据写入到bos中
42             bos.write(buffer,0,len);
43         }
44         bos.flush();//最近一次读取的数据可能达不到1024字节,这里强制清空缓冲区\
45         System.out.println("已经将c:/曲婉婷 - 没有什么不同 [mqms].mp3复制到c:/没有什么不同.mp3");
46         bos.close();
47         fos.close();
48     }
49 }
BufferedInputStrean文件复制

相关文章: