我使用junrar但是在提取后删除存档时遇到问题。 这是代码:
ExtractArchive extractArchive = new ExtractArchive();
extractArchive.extractArchive(new File(archiveFilePath), new File(destDirectory));
在此代码之后,我无法删除与archiveFilePath关联的文件。
我尝试了new File(archiveFilePath).delete();
和apache commons io
FileDeleteStrategy.FORCE.delete(new File(archiveFilePath));
但我收到错误或一个例外,因为文件是从另一个进程使用的。 有人对这个库有同样的问题吗?我可以通过其他方式删除该文件吗?感谢
这里有一个问题的确认: https://github.com/edmund-wagner/junrar/issues/28
答案 0 :(得分:1)
ExtractArchive.extractArchive(...)
中的代码是缺陷的,因为它在内部创建了Archive
实例,但它从不调用close()
来释放它的资源和文件句柄。
在Windows上,这会导致锁定的文件无法删除,除非JVM结束或垃圾收集器已收集该存档的所有对象实例,因此已释放文件句柄。
在Windows上没有其他方法可以删除该文件!