web-dev-qa-db-fra.com

Forcer la suppression de tous les fichiers d'un dossier

J'utilisais un morceau de code spécifique pour supprimer des fichiers d'un dossier, mais cela s'avère très problématique car j'ai peut-être oublié de fermer un ou deux InputStream. Le code que j'ai est si gros que je ne peux pas voir tous les Inputstreams que je n'ai pas fermés. Existe-t-il un moyen de supprimer des fichiers, qu’il y ait un InputStream ouvert ou non?

Ceci est la partie du code que j'ai utilisé;

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

J'ai édité le code. Cette version fonctionne.

12

Il n'y a pas d'instance InputStream dans le bloc de code fourni.

Pour ne pas écrire beaucoup de code IO non testé, jetez un coup d'œil au projet Apache.commons.io . Surtout à la classe FileDeleteStrategy , pour les opérations de suppression de fichier.

Votre code pourrait ressembler à ça:

File fin = new File("C:/ABC Statements final/");

for (File file : fin.listFiles()) {
    FileDeleteStrategy.FORCE.delete(file);
}   
18
Dmytro Chyzhykov

Vous pouvez utiliser:

FileUtils.deleteDirectory(File directory)

de Apache Commons

4
Pawel

Avec Apache Commons IO:

File dir = ...
FileUtils.deleteQuietly(dir);
dir.mkdirs();

Pas besoin de vérifier les exceptions de cette façon.

2
Ondra Žižka

Utilisation:

   import org.Apache.commons.io.FileUtils;
   FileUtils.cleanDirectory(fin);

Docs:

 /**
     * Clean a directory without deleting it.
     *
     * @param directory directory to clean
     * @throws IOException in case cleaning is unsuccessful
     */

Pour l'utiliser, vous avez besoin d'une dépendance:

Maven:

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.6</version>
</dependency>

Gradle:

compile 'commons-io:commons-io:2.6'
1
Xelian
public void removeDir()
{
try
{
    File dir = new File((System.getProperty("user.dir")+"/ReportFolderToMail"+timeStamp));
    if (dir.isDirectory())
    {
        File[] files = dir.listFiles();
        if (files != null && files.length > 0)
        {
            for (File aFile : files) 
            {
                System.gc();
                Thread.sleep(2000);
                 FileDeleteStrategy.FORCE.delete(aFile);
                System.out.println("delet file" +aFile);
            }
        }
        dir.delete();
        System.out.println("delet" +dir);
    } 
    else 
    {
        dir.delete();
    }
}
catch(Exception e)
{
    e.printStackTrace();
}
0
Shikha Chauhan
public boolean removeDir()
{
try
{
   //destFile = new File((System.getProperty("user.dir")+"/FileName"))
   // checks if the directory has any file
    File dir = destFile; 
    if (dir.isDirectory())
    {
        File[] files = dir.listFiles();
        if (files != null && files.length > 0)
        {
            for (File aFile : files) 
            {
                System.gc();
                Thread.sleep(2000);
                FileDeleteStrategy.FORCE.delete(aFile);
                System.out.println("delet file" +aFile);
            }
        }
        dir.delete();
        System.out.println("delet" +dir);
    } 
    else 
    {
        dir.delete();
    }
}
catch(Exception e)
{
    logger.log(LogStatus.FATAL, "Exception Occured While Deleting Folder : " +e);
}
return true;
}
0
Shikha Chauhan