我正在使用Java7编写代码,并使用了“用资源进行尝试”功能。当我创建一个ZipOutputStream实例时。通过这样做,我不再需要关闭最后块中的流。使用资源进行尝试(当然是由JVM管理)。
我的问题是- closeEntry()的用法如何?我应该在try块中编写这个方法,还是应该删除它,JVM就会像使用方法close()一样,通过try- with特性自动关闭它?
我几乎可以肯定,它与具有资源的尝试(或最终块)无关,我应该在我的try块中执行它,而不是在块中(如果我使用常规的尝试-捕获--最终),但是我想要确定它。
谢谢!
发布于 2016-11-07 15:26:53
closeEntry()的使用如何?我应该在try块中编写这个方法,还是应该删除它,JVM就会像使用方法close()一样,通过try- with特性自动关闭它?
如果希望调用closeEntry(),则应安排调用它。它不会自动调用时,尝试-与-资源块是退出-至少不是直接。对于带有closeEntry()的putNextEntry()逻辑对来说,并且进入try块的主体并不会导致调用putNextEntry(),也不应该这样做。
事实上,如果一个条目在调用时是打开的,则流闭包可能包含closeEntry()的效果。但是,这还没有文档化,所以最安全的做法是确实确保在最后一个条目之后调用closeEntry()。您也可以在条目之间调用它,但不需要这样做,因为在启动新条目之前,putNextEntry()被记录为关闭任何打开的条目。
https://stackoverflow.com/questions/40468385
复制相似问题