代码如下:
上面的代码中重命名文件失败了,手动删除的时候提示文件被jvm占用,也就是流没有关,但是我已经在 finally里面关了,于是我把finally改成这样:
文件重命名成功了,但是在第二个try抛异常了,说流已经关闭了,看了下源码,它调用的是FileOutputStream的flush,前面已经关了,当然抛异常啦。
于是我看了下BufferedOutputStream的close方法的源码(jdk1.8):
它只调用了FileOutputStream的flush并没有关闭它,可是我之前先调用了BufferedOutputStream的flush和close再调用了FileOutputStream的close方法,但是结果却没有关流。。。
谁能帮我解答一下吗,不胜感激!!!