【发布时间】:2023-03-04 12:47:01
【问题描述】:
我在使用 org.apache.commons.io.FileUtils 从 img 目录中删除文件时遇到问题。我正在使用此代码:
File dir = new File(".\\img");
FileFilter fileFilter = new WildcardFileFilter(userId + ".*");
File[] files = dir.listFiles(fileFilter);
System.out.println("files found: " + files.length);
for (int i = 0; i < files.length; i++) {
boolean success = FileUtils.deleteQuietly(files[i]);
System.out.println(files[i] + " delete result = " + success);
}
}
实际上,该代码用于将 img 目录中存在的图像文件替换为新的。我需要使用新文件删除所有以前存在的名称为 n.* 的文件,例如n.png。如果我试图删除图像文件,我会得到变量成功的错误值,并且文件不会被删除。但不是图像文件,例如*.abc; *.acd; *.acdc 等被成功删除。这个问题是怎么回事?
【问题讨论】:
-
末尾有一个右括号,没有匹配的左括号,缩进很奇怪。代码中是否缺少一些 if 语句?
-
你能提供一个输出样本吗?
-
为什么不尝试调用
files[i].delete(),看看抛出了什么异常。 -
尝试使用 jdk File.delete 方法而不是 deleteQuietly。我希望它会引发某种异常。如果有错误要解决,调试起来会容易得多。
-
第二,
FileUtils.deleteQuietly()"删除文件,从不抛出异常。"引用他们的 javadoc,因此无法使用此方法进行调试。
标签: java delete-file