Я смотрю приложение Android для организации и очистки своего телефона, и первое, что я начинаю делать, это «Очистить пустые папки», я подумал, что это будет легко, и на самом деле его легко , но я хочу пойти дальше ...Удалить алгоритм с пустыми папками
Ccleaner, например, только поиск пустых папок, это означает, что если есть папка с пустой папкой внутри или около того, вам нужно будет использовать ее 2 раза , потому что папка, содержащая пустую папку, будет пустой после очистки, с моим кодом я проверяю, есть ли в папке только пустые папки внутри, и она работает для простых случаев, таких как папка с двумя пустыми папками внутри, но когда ее более глубокая , он не работает должным образом.
Я хочу знать, является ли папка пустой и если папка безопасна для удаления, поскольку она содержит только пустые папки.
Если у меня есть папка с папкой внутри выход это один:
Empty Folder: /storage/emulated/0/Folder1/Folder2
Folder safe to remove (only empty folders inside):/storage/emulated/0/Folder1
Но с 3 ...
Empty Folder: /storage/emulated/0/Folder1/Folder2/Folder3
Folder safe to remove (only empty folders inside): /storage/emulated/0/Folder1/Folder2
Игнорирует первый (Folder1
)
Вот способ:
private void getAllEmptyFoldersOfDir(File directory) {
//Log.d(TAG, "Folder: " + directory.getAbsolutePath() + "\n");
int emptyFoldersCount = 0;
final File[] files = directory.listFiles();
if (files != null) {
for (File file : files) {
if (file != null) {
if (file.getName().equals("Android") && file.isDirectory()) {
//We need to exclude this folder
continue;
}
if (file.isDirectory()) {
if (file.listFiles().length > 0) {
getAllEmptyFoldersOfDir(file);
continue;
}
emptyFoldersCount++;
Log.d(TAG, "Empty Folder: " + file.getAbsolutePath() + "\n");
}
}
}
if (files.length == emptyFoldersCount)
Log.d(TAG, "Folder safe to remove (only empty folders inside): " + directory.getAbsolutePath() + "\n");
}
}
Любая помощь приветствуется, и мой английский не очень хорош, поэтому любое редактирование тоже оценено!
Спасибо, но, 1, он не работает (он говорит, что все папки безопасны для удаления), и 2, я хочу знать, является ли папка пустой и если папка безопасна для удаления, поскольку она имеет только пустые папки, я обновлю свой вопрос. –
мы можем достичь «из какой папки безопасно удалять» в этом методе? например, если я дам вам путь к моему каталогу, а затем сканирую один раз, когда метод может решить, можно ли удалить всю папку, которую невозможно удалить, и которая не может быть удалена. – dex
Ах, сделав небольшую ошибку, пришлось сделать дополнительную проверку, чтобы убедиться, что папка может содержать файлы, а также папки. Отредактировал ответ. Этот метод выводит все папки, которые можно безопасно удалить, и это был вопрос, который был задан здесь правильно? –