2013-05-21 1 views
0

Я пытаюсь удалить несколько файлов в одной папке с помощью vb.net, но мне еще не удалось. Помоги пожалуйста?Удаление нескольких файлов

Я попытался

Dim FileToDelete1 As String 
Dim FileToDelete2 As String 
Dim FileToDelete3 As String 
Dim FileToDelete4 As String 
Dim FileToDelete5 As String 

FileToDelete1 = Application.StartupPath & "\1.exe" 
FileToDelete2 = Application.StartupPath & "\2.dll" 
FileToDelete3 = Application.StartupPath & "\3.dll" 
FileToDelete4 = Application.StartupPath & "\4.dll" 
FileToDelete5 = Application.StartupPath & "\5.dll" 

If System.IO.File.Exists(FileToDelete1) = True Then 

My.Computer.FileSystem.DeleteFile(FileToDelete1) 


ElseIf System.IO.File.Exists(FileToDelete2) = True Then 

My.Computer.FileSystem.DeleteFile(FileToDelete2) 

ElseIf System.IO.File.Exists(FileToDelete3) = True Then 

My.Computer.FileSystem.DeleteFile(FileToDelete3) 

ElseIf System.IO.File.Exists(FileToDelete4) = True Then 

My.Computer.FileSystem.DeleteFile(FileToDelete4) 

ElseIf System.IO.File.Exists(FileToDelete5) = True Then 

My.Computer.FileSystem.DeleteFile(FileToDelete5) 

End If 
+0

Directory.GetFiles (путь, "\ * \ *.", SearchOption.toplevelonly) будет за вами все файлы. –

ответ

2

Несколько проблем здесь.

Во-первых, File.Exists возвращает логическое значение. "=True" не нужно, потому что вы в основном спрашиваете, есть ли True=True. К счастью, это так.

Во-вторых, существование файла или нет, это не единственный способ провалиться. Например, если файл используется, вы получите исключение. Вы должны справиться с этим.

В-третьих, что делать, если вам нужно удалить тысячу файлов? Вы бы создали String для каждого из них? Есть лучшие варианты, например, метод GetFiles, который вернет ReadOnly List of Strings, каждый из которых представляет один файл. я не знаю ваших потребностей, но поймать файлы вы упоминаете, следующий вызов может быть:

FileIO.FileSystem.GetFiles(Application.StartupPath, FileIO.SearchOption.SearchTopLevelOnly, {"?.exe", "?.dll"})

Он будет получать каждый EXE и DLL-файл, если это имя состоит только из одного символа.

Наконец, обратите внимание, что если первое условие выполнено, никто не будет оцениваться, поэтому никакой другой файл не будет удален. С этой реализацией вам нужно будет запустить программу 5 раз, чтобы удалить каждый файл. Метод GetFiles также решает эту проблему.

Кроме того, рассмотрите возможность импорта пространств имен, поэтому вам не нужно префикс их при каждом вызове метода.

+0

Просто соберите список. Каждый элемент представляет один файл. Проверка ответа @Div Tiwari –

-1

Похоже, вы хотите сделать некоторые вещи, как этого

Dim fileNames() as string={"1","2","3"} 
Dim fileTypes() as string={"exe","dll"} 

directory.SetCurrentDirectory(Application.StartupPath) 
    For each fileName as string in fileNames 
    For each fileType as string in fileTypes 
     if My.Computer.FileSystem .FileExists (fileName &"."& fileType) then 
      try 
      My.Computer.FileSystem.DeleteFile(fileName &"."& fileType) 
      catch ex As Exception 
      '**** processings related with exception. 
      end try 
     endif 
     'Dim files() As String = Directory.GetFiles(dirPath, fileName &"." & fileType, SearchOption.AllDirectories) 
     'For Each FileToDelete as string in files 
     ' My.Computer.FileSystem.DeleteFile(FileToDelete) 
     'Next 
    Next 
    Next 
+0

Нет, я не хочу удалять все файлы, содержащие .Dll или .Exe. Мне нужно удалить определенные файлы из того же каталога, что и в реальной программе. @ Sérgio Ribeiro: Думаю, это сработает, но как удалить результаты этого поиска? – user2404495

+0

Проверьте выше, это может ответить на ваш вопрос. –

+0

Да, это проверено, и это сработало как шарм! Большое спасибо! – user2404495