3
我想編寫一個刪除所有空文件夾的函數,並且可以忽略某些文件類型(允許的文件類型存儲在散列映射中)並告訴它是否應該查看目錄內部。刪除Java中的所有空文件夾
呼喚:
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();
}
}
的問題是,什麼也沒發生,即使它看上去通過,直到最後所有文件夾。這是一個好方法還是我完全錯過了一些東西?
任何你使用HashMap而不是HashSet的原因? – aioobe 2014-09-24 13:00:48
@aioobe現在你提到它。不,我會做成一套,因爲我只會檢查它是否爲空。謝謝。 – TomTom 2014-09-24 13:03:50
也許這可以幫助你一點:http://stackoverflow.com/a/20281958/2496309 – 2014-09-24 13:04:30