美文网首页
字节缓冲流

字节缓冲流

作者: kanaSki | 来源:发表于2019-06-25 19:15 被阅读0次

    BufferedInputStream与BufferedOutputStream
    BufferedInputStream内部开辟一个默认大小为8k的缓冲区
    正常释放时,先释放内部的流,再释放外部的流。
    但是BufferedInputStream的close方法默认先释放底层流,因此只写一个close即可。


    image.png

    从图中可以看出处理流使用装饰者模式,封装节点流对象,并对其进行扩展。

    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    
    public class TestBuffer {
        public static void main(String[] args) {
            try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream("1.jpg")); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("3.jpg"))) {
                byte[] bytes = new byte[1024];
                int len = -1;
                while ((len = bis.read(bytes)) != -1) {
                    bos.write(bytes, 0, len);
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    }
    

    FileInputStream通过操作系统调用资源
    而BufferedInputStream则是通过虚拟机管理,由虚拟机通知gc释放

    相关文章

      网友评论

          本文标题:字节缓冲流

          本文链接:https://www.haomeiwen.com/subject/qdgxcctx.html