gpt4 book ai didi

java - 删除Java中的所有空文件夹

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:46:47 24 4
gpt4 key购买 nike

我想编写一个删除所有空文件夹的函数,可以选择忽略某些文件类型(允许的文件类型存储在 hashmap 中)并告诉它是否应该查看目录。

调用:

HashMap<String, Boolean> allowedFileTypes = new HashMap<String, Boolean>();
allowedFileTypes.put("pdf", true);
deleteEmptyFolders("ABSOLUTE PATH", allowedFileTypes, true);

功能:

public static void deleteEmptyFolders(String folderPath, HashMap<String, Boolean> allowedFileTypes, boolean followDirectory) {

File targetFolder = new File(folderPath);
File[] allFiles = targetFolder.listFiles();


if (allFiles.length == 0)
targetFolder.delete();

else {
boolean importantFiles = false;

for (File file : allFiles) {

String fileType = "folder";
if (!file.isDirectory())
fileType = file.getName().substring(file.getName().lastIndexOf('.') + 1);

if (!importantFiles)
importantFiles = (allowedFileTypes.get(fileType) != null);

if (file.isDirectory() && followDirectory)
deleteEmptyFolders(file.getAbsolutePath(), allowedFileTypes, followDirectory);
}

// if there are no important files in the target folder
if (!importantFiles)
targetFolder.delete();
}
}

问题是什么也没有发生,即使它遍历所有文件夹直到最后。这是一个好方法还是我完全遗漏了什么?

最佳答案

这段代码递归删除所有空文件夹或目录:

public class DeleteEmptyDir {
private static final String FOLDER_LOCATION = "E:\\TEST";
private static boolean isFinished = false;

public static void main(String[] args) {

do {
isFinished = true;
replaceText(FOLDER_LOCATION);
} while (!isFinished);
}

private static void replaceText(String fileLocation) {
File folder = new File(fileLocation);
File[] listofFiles = folder.listFiles();
if (listofFiles.length == 0) {
System.out.println("Folder Name :: " + folder.getAbsolutePath() + " is deleted.");
folder.delete();
isFinished = false;
} else {
for (int j = 0; j < listofFiles.length; j++) {
File file = listofFiles[j];
if (file.isDirectory()) {
replaceText(file.getAbsolutePath());
}
}
}
}
}

关于java - 删除Java中的所有空文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26017545/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com