java _io_字节缓冲流(装饰器)输入、输出

*装饰模式

  • 字节缓冲流
  • BufferedInputStream bis=new BufferedInputStream(inputStream is)
  • BufferedOutputStream bos=new BufferedOutputStream(OutputStream os)
  • 最底层一定是节点流
  • 只需要释放最外层的处理流,若要手动关闭遵循从里到外的顺序关闭(从字节流到处理流)
  • 默认为8k,可以改变
    //参数是字节输入流对象
    InputStream is =new BufferedInputStream(new InputStream(f));
    OutputStream os=new BufferedOutputStream(new OutputStream(f));

处理流装饰字节流输入:

    File f =new File("C:\\Users\\10853\\eclipse-workspace\\hell\\src\\hell\\abc");

    InputStream is =null;
    try {
        **is=new BufferedInputStream(new FileInputStream(f));**

        byte[] flush =new byte[1024];
        int len=-1;
        while((len=is.read(flush))!=-1)
        {
            is.read(flush,0,len);
        }
    }catch(FileNotFoundException e)
    {
        e.printStackTrace();
    }catch(IOException e)
    {
        e.printStackTrace();
    }finally {

        try {

            if(null!=is)
            {
                i**s.close();**  //关闭处理流,会自动关闭字节流
            }
        }catch(IOException e)
        {
            e.printStackTrace();
        }

    }

处理流装饰字节流输出:

    File f=new File("D:d/c.txt");

    OutputStream os =null;
    try
    {
    **  os=new BufferedOutputStream(new FileOutputStream(f));**
        String s="addaa";
        byte[] datas=s.getBytes();
        os.write(datas,0,datas.length);
        os.flush();

    }catch(FileNotFoundException e)
    {
        e.printStackTrace();
    }catch(IOException e)
    {
        e.printStackTrace();
    }finally {
        try {
            if(**null!=os**)  //关闭处理流会自动关闭字节流
            {
                os.close();
            }
        }catch(IOException e)
        {
            e.printStackTrace();
        }   
    }

猜你喜欢

转载自blog.51cto.com/14437184/2423865