在java中递归删除文件夹
我已经有了一个可以工作的代码,但如果可能的话,我不希望它实际删除临时文件夹。我正在使用ApacheFileUtils。还有人知道如何排除被删除的文件夹吗在java中递归删除文件夹,java,fileutils,Java,Fileutils,我已经有了一个可以工作的代码,但如果可能的话,我不希望它实际删除临时文件夹。我正在使用ApacheFileUtils。还有人知道如何排除被删除的文件夹吗 public class Cleartemp { static String userprofile = System.getenv("USERPROFILE"); public static void main(String[] args) { try { File directo
public class Cleartemp {
static String userprofile = System.getenv("USERPROFILE");
public static void main(String[] args) {
try {
File directory = new File(userprofile+"\\AppData\\Local\\Temp");
//
// Deletes a directory recursively. When deletion process is fail an
// IOException is thrown and that's why we catch the exception.
//
FileUtils.deleteDirectory(directory);
} catch (IOException e) {
e.printStackTrace();
}
}
}
简单,
使用isDirectory()
将其从删除中排除
请参阅此处:()这里有一个实际的递归方法:
public void deleteDirectory(File startFile, FileFilter ignoreFilter) {
if(startFile.isDirectory())
for(File f : startFile.listFiles()) {
deleteDirectory(f, ignoreFilter);
}
if(!ignoreFilter.accept(startFile)) {
startFile.delete();
}
}
给它一个文件过滤器集,为目录返回true(见下文),使其不删除目录。您还可以为其他文件添加例外
FileFilter folderFilter = new FileFilter() {
@Override
public boolean accept(File paramFile) {
return paramFile.isDirectory();
}
};
怎么样?它在不删除目录的情况下清除目录
如果需要一些过滤逻辑,也可以使用apachecommons。页面上的一个示例包括
FileCleaner
实现 >第一次发表文章,不要认为自己是专家,但我被1.4……
这里有一个递归删除方法,它工作得很好,删除父文件夹中的所有文件和子文件夹,然后删除父文件夹本身,假设传递的文件是一个目录,就像我的例子一样
private void deleteTemp(File tempDir) {
File[] a = (tempDir.listFiles());
for (int i = 0; i < a.length; i++) {
File b = a[i];
if (b.isDirectory())
deleteTemp(b);
b.delete();
}
tempDir.delete();
}
private void deletemp(文件tempDir){
文件[]a=(tempDir.listFiles());
for(int i=0;i
删除临时文件夹后,您可以创建一个新的临时文件夹。或者使用FileUtils::iterateFiles删除每个文件。是否只删除其内容?不确定这应该是递归的。只需删除所有内容这是java删除文件的方法。我想那会管用的,但我一直更喜欢apache的方式。我还需要它来排除特定的文件夹,而不仅仅是一般的文件夹。我也许可以让isDirectory()来做这件事。我将把它作为一个选项来研究。我还考虑指定多个目录,而过滤器似乎也能做到这一点。