【发布时间】:2011-07-12 11:03:45
【问题描述】:
当我启动我的应用程序时,我会创建一个临时文件夹:
public static File createTempDir(String name) throws IOException {
File tempDir = File.createTempFile(name, "");
if (!(tempDir.delete())) {
throw new IOException("could not delete" + tempDir.getAbsolutePath());
}
if (!(tempDir.mkdir())) {
throw new IOException("could not create" + tempDir.getAbsolutePath());
}
tempDir.deleteOnExit();
return tempDir;
}
在会话期间,用户可能会加载文件。结果,旧的临时目录被删除,并根据加载的文件的 ID 创建了一个新目录。
在删除旧临时目录的加载过程中,我有时会收到:
java.io.IOException:无法删除文件:
以下是删除旧临时文件夹的方法:
public void cleanup(String tmpPath) {
File tmpFolder = new File(tmpPath);
if (tmpFolder != null && tmpFolder.isDirectory()) {
try {
FileUtils.deleteDirectory(file);
} catch (IOException e) {
e.printStackTrace();
}
}
}
FileUtils 在哪里:org.apache.commons.io.FileUtils。通常临时文件夹的内容是:
mytempfolder_uuid |-> 我的子文件夹 |-> myImage.jpg
错误是:
java.io.IOException:无法删除文件:C:\Users\xxx\AppData\Local\Temp\mytempfolder_uuid\mysubfolder\myImage.jpg
我已尝试调试应用程序,在执行删除操作之前验证上述图像实际上位于指定文件夹中。
令人讨厌的是,它只是偶尔发生。我已确保不要在任何其他应用程序中打开临时文件夹中的文件夹/文件。有什么想法/建议吗?
【问题讨论】:
-
也许您忘记在应用程序的某个位置关闭该文件的流?
-
当您尝试删除时,可能有人(用户、应用程序)有时会使用该文件夹。
-
@tul,您有近 30 个问题没有得到接受的答案。也许您可以尝试提出可以合理回答的问题或跟进答案,以便他们可以接受。 ;)