Search code examples
javafile-iodelete-filefileinputstream

Force Delete all files from a folder


I have been using a specific piece of code to delete files from a folder but it is proving very problematic because maybe I forgot to close an InputStream or two. The code I have is so big that I am not be able to see all the Inputstreams that I have not closed. Is there a way of deleting files whether there is an open InputStream or not?

This is the piece of the code that I have been using;

File fin = new File("C:/ABC Statements final/");
    File[] finlist = fin.listFiles();       
    for (int n = 0; n < finlist.length; n++) {
        if (finlist[n].isFile()) {
        System.gc();
        Thread.sleep(2000);
            finlist[n].delete();
        }
    }        

I have edited the code. This version works.


Solution

  • There is no InputStream instances in the provided chunk of code.

    To not write lots of untested IO code, please take a look at the apache.commons.io project. Especially at the FileDeleteStrategy class, for file deletion operations.

    Your code might look like that:

    File fin = new File("C:/ABC Statements final/");
    
    for (File file : fin.listFiles()) {
        FileDeleteStrategy.FORCE.delete(file);
    }