2010-10-21 22 views
8

Nella mia applicazione ho scritto il codice per eliminare la directory dall'unità ma quando controllo la funzione di eliminazione di File non cancella il file. Ho scritto qualche cosa come questaimpossibile cancellare la directory tramite Java

//Code to delete the directory if it exists 
File directory = new File("c:\\Report\\"); 
if(directory.exists()) 
directory.delete(); 

le directoryis non utilizzato ancora non è in grado di cancellare la directory

risposta

18

in Java, directory la cancellazione è possibile solo per la directory vuota, whi ch porta a metodi come la seguente:

/** 
* Force deletion of directory 
* @param path 
* @return 
*/ 
static public boolean deleteDirectory(File path) { 
    if (path.exists()) { 
     File[] files = path.listFiles(); 
     for (int i = 0; i < files.length; i++) { 
      if (files[i].isDirectory()) { 
       deleteDirectory(files[i]); 
      } else { 
       files[i].delete(); 
      } 
     } 
    } 
    return (path.delete()); 
} 

Questo eliminerà la cartella, anche se non vuoto, senza problemi (escluso quando questa directory è bloccato da OS).

1

La directory deve essere vuota per eliminarlo. Se non è vuoto, è necessario eliminare in modo ricorsivo con File.listFiles() e File.Delete()

1

Due altre possibilità (oltre alla directory di non essere vuota):

  • L'utente che gestisce il programma Java non ha di scrittura/cancellazione il permesso per la directory
  • la directory è utilizzata/bloccato da un altro processo (si scrive che non è, ma come hanno avete confermato questo?)
2

Guardando la documentazione:

Se questo percorso denota una directory, la directory deve essere vuota per poter essere cancellato.

Si è accertato che la directory sia vuota (nessun file nascosto)?

13

Perché inventare una ruota con metodi da eliminare in modo ricorsivo? Dai un'occhiata ad apache commons io. https://commons.apache.org/proper/commons-io/javadocs/api-1.4/

FileUtils.deleteDirectory(dir); 

O

FileUtils.forceDelete(dir); 

Questo è tutto ciò che serve. Ci sono anche molti metodi utili per manipolare i file ...

+0

Amore quando c'è già qualcosa di scritto. Completamente d'accordo. Grazie per il testa a testa. – Aaron

+0

FileUtils # deleteDirectory e FileUtils # forceDelete implementazioni che lo fanno anche in modo ricorsivo ... –

Problemi correlati