通过Junrar提取rar文件,然后删除存档

时间:2016-06-06 08:30:35

标签: java file archive delete-file rar

我使用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

1 个答案:

答案 0 :(得分:1)

ExtractArchive.extractArchive(...)中的代码是缺陷的,因为它在内部创建了Archive实例,但它从不调用close()来释放它的资源和文件句柄。

在Windows上,这会导致锁定的文件无法删除,除非JVM结束或垃圾收集器已收集该存档的所有对象实例,因此已释放文件句柄。

在Windows上没有其他方法可以删除该文件!