2010-02-11 15 views
14

Ho una domanda molto veloce. Il mio programma in realtà scarica un file zip e poi lo estrae sul desktop. Ma ho bisogno di una funzione di disinstallazione per questo, che è in pratica l'eliminazione di più cartelle e contenenti file. Come posso farlo in vb.net?Elimina cartelle e file contenenti

risposta

35

Se tutte le cartelle sono contenute in una singola cartella, dovrebbe essere abbastanza semplice.

Dim path As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\YOURPATH" 
System.IO.Directory.Delete(path, True) 

Questo eliminerà la directory principale e tutte le directory e i file sottostanti. Si può semplicemente chiamare più volte se i file e le directory non sono tutti in una singola directory root come "YOURPATH" nell'esempio. Ciò ti eviterà di dover rimuovere ogni file singolarmente.

+4

+1 - Non avendo mai cancellato una directory, non pensavo di guardare nell'oggetto Directory per un metodo Delete. Questa risposta è migliore della mia. –

3

unità .NET IO ha due comandi che dovrebbero permetterà di fare il trucco:

System.IO.Directory.GetDirectories("C:\\Program Files\\Your Directory\\*.*"); 
System.IO.Directory.GetFiles("C:\\Program Files\\Your Directory\\*.*"); 

vorrei scrivere un metodo che prende il nome di una directory e utilizza i "GetFiles" di routine per ottenere tutti dei file e per eliminarli utilizzando System.IO.File.Delete (percorso) in un ciclo foreach. Quindi, eseguire un ciclo foreach sul risultato del comando GetDirectories() che chiama la funzione in modo ricorsivo.

Aggiornamento: Steve Danner sottolinea che lo spazio dei nomi System.IO.Directory ha un metodo Delete in modo da non dover passare attraverso i loop di cui parlo qui. La sua risposta è giusta e dovrebbe essere votata. Il mio, a questo punto, è più di una curiosità (anche se grazie alla persona che mi ha dato un upvote; 0).

-2
Dim path As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\YOURPATH" 
System.IO.Directory.Delete(path, True) 
+1

aggiungendo un po 'di descrizione renderà più soddisfacenti le tue risposte –

-1

Vostro stanno cercando DirectoryInfo, usare in questo modo:

Dim di As New IO.DirectoryInfo(path) 
di.Delete(True)