[英]Unable to delete a temp folder using FileUtils
我正在使用Java 8应用程序,该应用程序下载目录/文件的列表并将其存储在生成的Temp目录( %LocalAppData%/Temp/
的目录)中。 所有下载完成后,将生成XML文件并将其作为文本存储在数据库中。
使用以下命令创建一个Temp目录:
Path packageTargetDirectory = java.nio.file.Files.createTempDirectory("packages");
在我的JUnit测试中,我想测试功能。 有用。 因此,在测试之后,我希望我的测试代码以递归方式删除包含目录的目录(使用org.apache.commons.io.FileUtils.deleteDirectory()
方法)。
在带有@After
批注的测试函数中调用该方法。 调用方法并测试代码时,我得到IOException
:
java.io.IOException: Unable to delete directory C:\\Users\\martin\\AppData\\Local\\Temp\\packages3096883734780765073\\WindowsAzure.Storage
我进入目录,并在测试运行后尝试删除它:我可以自己删除它。 我尝试了很多事情。 我尝试了org.apache.commons.io.FileUtils.forceDelete()
方法。 我还尝试了以下代码进行删除:
Files.walkFileTree(testDataDirectory, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
Files.delete(file);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
Files.delete(dir);
return FileVisitResult.CONTINUE;
}
});
删除目录结构失败。 内容似乎已删除。
无法删除temp文件夹中的目录可能是什么问题? 我本来想打开流,但似乎已经关闭了所有流。
为什么不使用JUnit现有功能?
从Java doc复制:
TemporaryFolder规则允许创建测试方法完成时(无论通过还是失败)应删除的文件和文件夹。 此规则不检查删除是否成功。 万一删除失败,将不会引发任何异常。
@Rule
public TemporaryFolder folder= new TemporaryFolder();
@Test
public void testUsingTempFolder() throws IOException {
File createdFile= folder.newFile("myfile.txt");
File createdFolder= folder.newFolder("subfolder");
// ...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.