安全删除文件夹的解决方法

来源:爱站网时间:2022-10-06编辑:网友分享
在java编程中,你知道要如何安全删除文件夹吗?带着问题,爱站技术频道小编特地整理了相关资料给大家,如果你有需要的话可以随时来翻阅查看。

问题描述


我正在盯着一个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");
    }

}

 

解决方法:


boolean getAllEmptyFoldersOfDir(File current){ if(current.isDirectory()){ File[] files = current.listFiles(); if(files.length == 0){ //There is no file in this folder - safe to delete System.out.println("Safe to delete - empty folder: " + current.getAbsolutePath()); return true; } else { int totalFolderCount = 0; int emptyFolderCount = 0; for(File f : files){ if(f.isDirectory()){ totalFolderCount++; if(getAllEmptyFoldersOfDir(f)){ //safe to delete emptyFolderCount++; } } } if(totalFolderCount == files.length && emptyFolderCount == totalFolderCount){ //only if all folders are safe to delete then this folder is also safe to delete System.out.println("Safe to delete - all subfolders are empty: " + current.getAbsolutePath()); return true; } } } return false; }

只要安全删除文件夹,此方法将返回true。因此,无论何时进行递归调用,首先都要扫描所有子文件夹并确认它们为空。仅当所有子文件夹都为空(emptyFolderCount == totalFolderCount)时,文件夹本身才可以安全删除。

安全删除文件夹的解决方法内容分享到这里就结束了,如果你还有什么需要了解清楚的,可以来网站给小编留言。获取更多精彩内容,尽在爱站技术频道网站。

上一篇:Mysql utf8解决无法保存印地语和其他语言的思路

下一篇:Java中从表中获取一行的函数

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载