Проверьте, существует ли часть имени файла

Итак, я знаю, что в следующем примере кода он проверяет, существует ли файл (полное имя файла)...

If My.Computer.FileSystem.FileExists("C:\Temp\Test.cfg") Then
   MsgBox("File found.")
Else
   MsgBox("File not found.")
End If

... Но что, если часть файла a существует? Для файлов не существует стандартного соглашения об именах, но они всегда будут иметь расширение .cfg.

Итак, я хочу проверить, содержит ли C:\Temp файл *.cfg, и если он существует, сделайте что-нибудь, иначе сделайте что-нибудь еще.


person Muhnamana    schedule 04.02.2013    source источник
comment
используйте FileSystem.Dir, чтобы получить список файлов в каталоге, а затем вы можете увидеть, содержит ли какое-либо из имен файлов искомую строку.   -  person DeanOC    schedule 04.02.2013


Ответы (3)


Символ * можно использовать для определения простых шаблонов фильтрации. Например, если вы используете *abc*, он будет искать файлы, имя которых содержит «abc».

Dim paths() As String = IO.Directory.GetFiles("C:\Temp\", "*.cfg")
If paths.Length > 0 Then 'if at least one file is found do something
    'do something
End If
person theGD    schedule 04.02.2013

Вы можете использовать FileSystem.Dir с подстановочным знаком, чтобы увидеть, есть ли совпадение файлов.

Из MSDN

Dim MyFile, MyPath, MyName As String 
' Returns "WIN.INI" if it exists.
MyFile = Dir("C:\WINDOWS\WIN.INI")   

' Returns filename with specified extension. If more than one *.INI 
' file exists, the first file found is returned.
MyFile = Dir("C:\WINDOWS\*.INI")

' Call Dir again without arguments to return the next *.INI file in the 
' same directory.
MyFile = Dir()

' Return first *.TXT file, including files with a set hidden attribute.
MyFile = Dir("*.TXT", vbHidden)

' Display the names in C:\ that represent directories.
MyPath = "c:\"   ' Set the path.
MyName = Dir(MyPath, vbDirectory)   ' Retrieve the first entry.
Do While MyName <> ""   ' Start the loop.
      ' Use bitwise comparison to make sure MyName is a directory. 
      If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then 
         ' Display entry only if it's a directory.
         MsgBox(MyName)
      End If   
   MyName = Dir()   ' Get next entry.
Loop
person DeanOC    schedule 04.02.2013

Вы можете использовать Path.GetExtension из System.IO, чтобы получить расширение и проверить, является ли оно тем, которое вы ищете «.cfg». Path.GetExtension возвращает пустую строку, если нет расширения.

Из MSDN

person TazAstroSpacial    schedule 13.02.2018