0

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

RecursiveDelete method code is:

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.

Where to change the code?

Brian Tompsett - 汤莱恩
  • 5,753
  • 72
  • 57
  • 129
tajMahal
  • 418
  • 6
  • 18
  • 40
  • Don't you use Java 7? – fge Jun 03 '14 at 11:18
  • http://stackoverflow.com/questions/14893205/how-to-replace-file-listfilesfilefilter-filter-with-nio-in-java-7 – Viktor K. Jun 03 '14 at 11:25
  • your code is working fine and it is deleting empty directories as well – Sanjeev Jun 03 '14 at 11:28
  • @Sanjeev,files are deleting inside sub1,sub2.After becoming sub1,sub2 folders empty its remaining.Not deleting sub1,sub2. – tajMahal Jun 03 '14 at 11:34
  • I ran your code on my Windows box it is running fine. are you using some other os? – Sanjeev Jun 03 '14 at 11:36
  • As i told sub1,sub2 also has to delete.only i need to show .zip file remaining everyting inside Books folder i have to delete.for the same code i'm able to delete all files inside sub1,sub2.But sub1,sub2 are not deleting,I'm also using windows only. – tajMahal Jun 03 '14 at 11:39

1 Answers1

2
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)

Community
  • 1
  • 1
Zahlii
  • 818
  • 1
  • 7
  • 17
  • destwithouAudio,this is my main folder where i have all .zip files and subfolders are located @Zahlii – tajMahal Jun 03 '14 at 11:31