以下功能用于删除备份文件夹中的空目录。但是这种方法的问题是,如果它为空,它也会删除备份文件夹。

public static void deleteEmptyDirectoriesOfFolder(final File folder) {
    if(folder.listFiles().length == 0){
        folder.delete();
    }else {
        for (final File fileEntry : folder.listFiles()) {
            if (fileEntry.isDirectory()) {
                deleteEmptyDirectoriesOfFolder(fileEntry);
                if(fileEntry.listFiles().length == 0){
                    fileEntry.delete();
                }
            }
        }
    }

}


假设我的文件夹结构如下,

backup
 -2019
  -10
   -15
 -2020


如果我将方法作为deleteEmptyDirectoriesOfFolder(backup)调用,它也会删除backup文件夹。有没有解决此问题的建议而不包含第二个参数?

最佳答案

您是如此接近,只需将其分为两种方法即可:


deleteEmptySubDirectoriesOfFolder-调用所有子目录的当前方法
deleteEmptyDirectoriesOfFolder-您的当前方法。


这是新方法:

public static void
deleteEmptySubDirectoriesOfFolder(final File folder)
{
    for (final File fileEntry : folder.listFiles()) {
            if (fileEntry.isDirectory()) {
                deleteEmptyDirectoriesOfFolder(fileEntry);
                if(fileEntry.listFiles().length == 0){
                    fileEntry.delete();
                }
            }
        }

}

10-08 02:36