Comment supprimer un répertoire en Java

Comment supprimer un répertoire en Java

Pour supprimer un répertoire, vous pouvez simplement utiliser lesFile.delete(), mais le répertoire doit être vide pour pouvoir le supprimer.

Souvent, vous devrez peut-être exécuterrecursive delete in a directory, ce qui signifie que tous ses sous-répertoires et fichiers doivent également être supprimés, voir l'exemple ci-dessous:

Exemple de suppression récursive de répertoire

Supprimez le répertoire nommé «C:\example-new», ainsi que tous ses sous-répertoires et fichiers. Le code est explicite et bien documenté, il doit être facile à comprendre.

package com.example.file;

import java.io.File;
import java.io.IOException;

public class DeleteDirectoryExample
{
    private static final String SRC_FOLDER = "C:\\example-new";

    public static void main(String[] args)
    {

        File directory = new File(SRC_FOLDER);

        //make sure directory exists
        if(!directory.exists()){

           System.out.println("Directory does not exist.");
           System.exit(0);

        }else{

           try{

               delete(directory);

           }catch(IOException e){
               e.printStackTrace();
               System.exit(0);
           }
        }

        System.out.println("Done");
    }

    public static void delete(File file)
        throws IOException{

        if(file.isDirectory()){

            //directory is empty, then delete it
            if(file.list().length==0){

               file.delete();
               System.out.println("Directory is deleted : "
                                                 + file.getAbsolutePath());

            }else{

               //list all the directory contents
               String files[] = file.list();

               for (String temp : files) {
                  //construct the file structure
                  File fileDelete = new File(file, temp);

                  //recursive delete
                 delete(fileDelete);
               }

               //check the directory again, if empty then delete it
               if(file.list().length==0){
                 file.delete();
                 System.out.println("Directory is deleted : "
                                                  + file.getAbsolutePath());
               }
            }

        }else{
            //if file, then delete it
            file.delete();
            System.out.println("File is deleted : " + file.getAbsolutePath());
        }
    }
}

Résultat

File is deleted : C:\example-new\404.php
File is deleted : C:\example-new\archive.php
...
Directory is deleted : C:\example-new\includes
File is deleted : C:\example-new\index.php
File is deleted : C:\example-new\index.php.hacked
File is deleted : C:\example-new\js\hoverIntent.js
File is deleted : C:\example-new\js\jquery-1.4.2.min.js
File is deleted : C:\example-new\js\jquery.bgiframe.min.js
Directory is deleted : C:\example-new\js\superfish-1.4.8\css
Directory is deleted : C:\example-new\js\superfish-1.4.8\images
Directory is deleted : C:\example-new\js\superfish-1.4.8
File is deleted : C:\example-new\js\superfish-navbar.css
...
Directory is deleted : C:\example-new
Done