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
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.
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).
Dim path As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\YOURPATH"
System.IO.Directory.Delete(path, True)
aggiungendo un po 'di descrizione renderà più soddisfacenti le tue risposte –
Vostro stanno cercando DirectoryInfo, usare in questo modo:
Dim di As New IO.DirectoryInfo(path)
di.Delete(True)
+1 - Non avendo mai cancellato una directory, non pensavo di guardare nell'oggetto Directory per un metodo Delete. Questa risposta è migliore della mia. –