如何只保存zip文件并使用java删除其他文件夹? [英] How to save only zip files and remove other folders using java?

查看:178
本文介绍了如何只保存zip文件并使用java删除其他文件夹?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这里我有文件夹(书),我有3个子文件夹命名: sub1,sub2,sub3 sub1有2个文件 sub2有3文件 sub3有4个文件。而 sub1.zip sub2.zip sub3.zip 。我希望只保留zip文件删除书籍的sub1,sub2,sub3文件夹。使用我的代码,我可以删除sub1文件夹,sub2,sub3的所有内部文件,最后所有文件夹变为空,然后如何删除sub1,sub2和sub3文件夹

Here i have Folder(Books)in that i have 3 sub folders named:sub1, sub2, sub3 and sub1 have 2 files, sub2 have 3 files, sub3 have 4 files. And sub1.zip,sub2.zip and sub3.zip. I want to keep only zip files and delete sub1, sub2, sub3 folders of Books. With my code I'm able to delete all inside files of sub1 folder, sub2, sub3 finally all folders becoming empty, then how can I delete sub1,sub2 and sub3 folders.

public void SaveZipFiles(File destwithouAudio) throws IOException {
    File[] listOfFiles = destwithouAudio.listFiles();
    for (File listOfFile : listOfFiles) {
        if (listOfFile.getName().endsWith(".zip")) {
        } else {
            File FolderInside = new File(listOfFile.getAbsolutePath());
            File[] listOfFilesInside = FolderInside.listFiles();
            for (File listOfFilesInside1 : listOfFilesInside) {
                File deleteFolder = new File(listOfFilesInside1.getAbsolutePath());
                //System.out.println(""+listOfFilesInside[j]);
                RecursiveDelete(deleteFolder);
            }
        }
    }
}

递归删除方法代码是:

public static void RecursiveDelete(File file) throws IOException {
    if (file.isDirectory()) {
        if (file.list().length == 0) {
            file.delete();
            System.out.println("Directory is deleted : " + file.getAbsolutePath());
        } else {
            String files[] = file.list();
            for (String temp : files) {
                File fileDelete = new File(file, temp);
                RecursiveDelete(fileDelete);
            }
            if (file.list().length == 0) {
                file.delete();
                System.out.println("Directory is deleted : " + file.getAbsolutePath());
            }
        }
    } else {
        file.delete();
        System.out.println("File is deleted : " + file.getAbsolutePath());
    }
}

sub1中删除所有文件后,sub2 ,sub3 文件夹我需要删除所有 sub1,sub2,sub3 文件夹。

After deleting all files from sub1,sub2,sub3 foldersIi need to delete all sub1,sub2,sub3 folders.

哪里可以更改代码?

推荐答案

public void deleteDir(File dir) {
    if (dir.isDirectory()) {
        String[] children = dir.list();
        for (int i = 0; i < children.length; i++) {
            boolean success = deleteDir(new File(dir, children[i]));
            if (!success) {
                return false;
            }
        }
    }

    return dir.delete(); // The directory is empty now and can be deleted.
}

那么你可以使用

public void SaveZipFiles(File destwithouAudio) { 
    File[] deletion = destwithouAudio.listFiles(new FilenameFilter() {

        @Override
        public boolean accept(File dir, String name) {
            return !name.endsWith(".zip");
        }

    });
    for (File toDelete : deletion) {
        deleteDir(toDelete);
    }
}

(使用从Java中删除文件 删除)

(using deleting folder from java folder deletion)

这篇关于如何只保存zip文件并使用java删除其他文件夹?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆