2010-02-11 2 views
14

У меня очень быстрый вопрос. Моя программа фактически загружает zip-файл, а затем извлекает его на свой рабочий стол. Но для этого мне нужна функция удаления, которая в основном удаляет несколько папок и содержит файлы. Как я могу это сделать в vb.net?Удаление папок и содержащих файлы

ответ

35

Если все ваши папки содержатся в одной папке, это должно быть довольно прямолинейно.

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

Это удалит ваш корневой каталог и все каталоги и файлы под ним. Вы можете просто называть это несколько раз, если ваши файлы и каталоги не все находятся в одном корневом каталоге, например «YOURPATH». Это избавит вас от необходимости удалять каждый файл по отдельности.

+4

+1 - Никогда не вычеркнув каталог, я не думаю, что смотреть в объекте Справочник для метода Delete. Этот ответ лучше моего. –

3

В .NET IO модуль имеет две команды, которые должны позволить вам сделать трюк:

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

Я бы написать метод, который принимает имя каталога и использует «GetFiles» рутина, чтобы получить все файлов и удалить их с помощью System.IO.File.Delete (путь) в цикле foreach. Затем запустите цикл foreach в результате команды GetDirectories(), вызывающей функцию рекурсивно.

Обновление: Стив Дэннер указывает, что пространство имен System.IO.Directory имеет метод Delete, поэтому вам не нужно проходить через циклы, о которых я говорю здесь. Его ответ правильный, и его нужно проголосовать. Шахта, на данный момент, больше любопытна (хотя спасибо человеку, который дал мне верх, 0).

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

добавление немного описания сделает ваши ответы более вкусными –

-1

Ваш ищете DirectoryInfo, использовать его как это:

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