it-swarm.com.de

Erzwingen Sie das Löschen aller Dateien aus einem Ordner

Ich habe einen bestimmten Code verwendet, um Dateien aus einem Ordner zu löschen, aber das ist sehr problematisch, weil ich vielleicht vergessen habe, einen oder zwei InputStream zu schließen. Der Code, den ich habe, ist so groß, dass ich nicht alle Inputstreams sehen kann, die ich nicht geschlossen habe. Gibt es eine Möglichkeit, Dateien zu löschen, ob InputStream geöffnet ist oder nicht?

Dies ist der Code, den ich verwendet habe.

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

Ich habe den Code bearbeitet. Diese Version funktioniert.

Der bereitgestellte Codeabschnitt enthält keine InputStream-Instanzen.

Um nicht viel ungetesteten IO - Code zu schreiben, werfen Sie einen Blick auf das Apache.commons.io -Projekt. Besonders bei der FileDeleteStrategy - Klasse für Dateilöschungen.

Ihr Code könnte so aussehen:

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

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

Sie können verwenden:

FileUtils.deleteDirectory(File directory)

aus Apache Commons

4
Pawel

Mit Apache Commons IO:

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

Auf diese Weise müssen Sie nicht nach Ausnahmen suchen.

2
Ondra Žižka

Benutzen:

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

Dokumente:

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

Um es zu nutzen, benötigen Sie eine Abhängigkeit:

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