我正面临一个不寻常的问题.我正在建造一个计划每5分钟运行一次的工具.
它将从特定目录中获取zip文件,并将文件(取决于文件名)提取到目标.我使用zipentry获取zip文件中的每个文件名,然后根据需要解压缩然后我将它们(zip文件,一旦我完成zip中的所有文件)备份到特定目录,然后删除zip文件.但有时(并非总是)zip文件不会被删除.因为我使用的是fileutils.forcedelete().我收到一个例外:无法删除文件.所以我改为使用fileutils.forcedeleteonexit()的代码仍然有些文件保留在源代码中.
以下是我的代码示例:
sourceFile=new file(zipfile);
zipFile = new ZipFile(sourceFile);
zEnum = (Enumeration) zipFile.entries();
for (int a = 0; a < zipFile.size(); a++)
{
ZipEntry zE = zEnum.nextElement();
//Function uses zip4j for extracting. No streams used.
extract(String sourceZipFile, String fileNameToExtract, String outputFolder);
}
//I tried it with finally either
zipFile.close();
//Using fileutils to copy. No streams used.
copyFile(sourceFile, backup);
FileUtils.forceDeleteOnExit(sourceFile);
没有使用流,但我有时(不总是)锁定文件.
什么似乎是这里的错误?是zip4j提取导致问题还是其他什么?我使用的是zip4j 1.3.1.