2010-10-21 15 views
8

Uygulamamda, dizini sürücüden silmek için kodu yazdım ancak Dosya silme işlevini incelediğimde dosyayı silmez. kullanılan içinde Hala dizin silmek için boş olması gerekir diziniDizini Java aracılığıyla silemiyor

cevap

18

tarafından kilitlenmiş, dizin izni silmez silme sadece boş dizin için mümkündür, WHI ch aşağıdaki gibi yöntemlerle yol açar:

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

Bu seferki, Klasörünüzü silecektir bile, boş olmayan ise sorun olmadan (bu dizin işletim sistemi tarafından kilitlendiğinde hariç).

1

silmek mümkün değildir directoryis değil bu

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

gibi bazı şey yazdım. Boş değilse, sen File.listFiles() ve File.delete()

1

diğer iki olasılık (dizin boş olmamak yanı sıra) ile yinelemeli olarak da silmek gerekir:

  • çalıştıran kullanıcı java programı/yazma sahip dizinine
  • dizin kullanılır
  • /farklı bir süreç (eğer? o kadar zor olmadığını yazma, ama nasıl bu teyit var) Java
2

docs baktığımızda: Bu yol adı bir dizini gösterir

, sonra dizin silinecek için boş olması gerekir.

Dizinin boş olduğundan emin oldunuz (hiçbir gizli dosya yok)?

13

Tekerleği yineleme yöntemleriyle silmek için neden icat etmelisiniz? Apache commons io'ya bir göz atın. https://commons.apache.org/proper/commons-io/javadocs/api-1.4/

FileUtils.deleteDirectory(dir); 

VEYA tek ihtiyacınız olan

FileUtils.forceDelete(dir); 

. Ayrıca dosyaları işlemek için kullanışlı yöntemler de vardır ...

+0

Önceden yazılmış bir şey olduğunda seviyorum. Tamamen katılıyorum. Head-up için teşekkürler. – Aaron

+0

FileUtils # deleteDirectory ve FileUtils # forceDelete uygulamaları da yinelemeli olarak yapıyor ... –

İlgili konular