黑马程序员技术交流社区

标题: 关闭流问题? [打印本页]

作者: 崔陈喜    时间: 2012-5-15 01:47
标题: 关闭流问题?
public class BufferedDemo {

        public static void main(String[] args) throws IOException {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("004.jpg"));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("dest.jpg"));

int b;
while ((b = bis.read()) != -1)                 
        bos.write(b);                                         

bis.close();//如果我不关闭回怎样?
bos.close();//如果我不关闭回怎样?

        }

}

作者: —__    时间: 2012-5-15 05:36
楼上问题很纠结,其实视频中老师已经说的很明白了,在简单给你说下
如果你的流不关闭,在自己电脑上的时候就会一直占用你的内存资源,内存的缓存机制。如果这种流多了 你就会发现你电脑运行越来越慢
2.如果是连接服务器上,同上服务器的同一时间段的连接数量是有限的,如果不关闭资源就表示你的机器一直连接在服务器上,等到达到连接数量的最大限制后,其他用户就连接不到服务器了
作者: 朱晓辉    时间: 2012-5-15 08:06
不关的话也不会报错,但是会占用系统资源。
作者: 刘克方    时间: 2012-5-15 08:18
本帖最后由 刘克方 于 2012-5-15 08:19 编辑

你不关会浪费内存资源,也有可能数据不能完全写入,完成拷贝;因为其内部有个缓冲区,假如缓冲区为1024字节,每次你写入在1024字节之内,它是不会往硬盘写入数据的而是缓存在内存;如果超出1024它会自动调用flush(),将缓存数据清空并写入目标文件。
close()方法有两个作用
一,清除缓冲区的内容,将其写入目标文件,(因为在close方法内部调用了flush方法)
二,关闭流资源,





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2