简体   繁体   English

如何使用Java仅保存zip文件并删除其他文件夹?

[英]How to save only zip files and remove other folders using java?

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 . 在这里我有Folder(Books),其中有3个子文件夹,分别为: sub1,sub2,sub3sub1有2个文件sub2有3个文件sub3有4个文件 And sub1.zip , sub2.zip and sub3.zip . 以及sub1.zipsub2.zipsub3.zip I want to keep only zip files and delete sub1, sub2, sub3 folders of Books. 我只想保留zip文件,删除Book的sub1,sub2,sub3文件夹 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 . 通过我的代码,我能够删除sub1文件夹,sub2,sub3的所有内部文件,最后所有文件夹都变为空,然后如何删除sub1,sub2和sub3文件夹

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);
            }
        }
    }
}

RecursiveDelete method code is: RecursiveDelete方法代码为:

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());
    }
}

After deleting all files from sub1,sub2,sub3 foldersIi need to delete all sub1,sub2,sub3 folders. sub1,sub2,sub3文件夹删除所有文件后 ii需要删除所有sub1,sub2,sub3文件夹。

Where to change the code? 在哪里更改代码?

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.
}

then, you could be using 然后,您可能正在使用

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);
    }
}

(using deleting folder from java folder deletion) (使用从Java文件夹删除中删除文件夹)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM