BufferInputStream&BufferOutputStream

来源:互联网 发布:加密狗软件安装 编辑:程序博客网 时间:2024/05/01 16:34
1.  java.io.BufferedInputStream与java.io.BufferedOutputStream可以为InputStream,OutputStream类增加缓冲区功能。构建BufferedInputStream实例时,需要给定一个InputStream类型的实例,实现BufferedInputStream时,实际上最后是实现InputStream实例。同样,构建BufferedOutputStream时,也需要给定一个OutputStream实例,实现BufferedOutputStream时,实际上最后是实现OutputStream实例。 

2. BufferedInputStream的数据成员buf是一个位数组,默认为2048字节。当读取数据来源时,例如文件,BufferedInputStream会尽量将buf填满。当使用read()方法时,实际上是先读取buf中的数据,而不是直接对数据来源作读取。当buf中的数据不足时,BufferedInputStream才会再实现给定的InputStream对象的read()方法,从指定的装置中提取数据。 

3. BufferedOutputStream的数据成员buf也是一个位数组,默认为512字节。当使用write()方法写入数据时实际上会先将数据写到buf中,当buf已满时才会实现给定的OutputStream对象的write()方法,将buf数据写到目的地,而不是每次都对目的地作写入的动作。 


  1. public class BufferedStreamDemo     
  2. {     
  3.     public static void main(String[] args)     
  4.     {     
  5.         try    
  6.         {     
  7.             byte[] data = new byte[1];     
  8.     
  9.             File srcFile = new File(args[0]);     
  10.             File desFile = new File(args[1]);     
  11.     
  12.             BufferedInputStream bufferedInputStream =      
  13.                 new BufferedInputStream(new FileInputStream(srcFile));     
  14.     
  15.             BufferedOutputStream bufferedOutputStream =      
  16.                 new BufferedOutputStream(new FileOutputStream(desFile));     
  17.     
  18.             System.out.println("复制文件:"+srcFile.length()+"字节");     
  19.     
  20.             while(bufferedInputStream.read(data)!=-1)     
  21.             {     
  22.                 bufferedOutputStream.write(data);     
  23.             }     
  24.     
  25.             //将缓冲区中的数据全部写出     
  26.             bufferedOutputStream.flush();     
  27.     
  28.             //关闭流     
  29.             bufferedInputStream.close();     
  30.             bufferedOutputStream.close();     
  31.     
  32.             System.out.println("复制完成");     
  33.         }     
  34.         catch(ArrayIndexOutOfBoundsException e)     
  35.         {     
  36.             System.out.println("using:java UseFileStream src des");     
  37.             e.printStackTrace();     
  38.         }     
  39.         catch(IOException e)     
  40.         {     
  41.             e.printStackTrace();     
  42.         }     
  43.     }     
  44. };    

原创粉丝点击