使用.net检查路径中是否存在文件名的一部分

时间:2013-05-28 19:19:42

标签: vb.net file web-applications file-upload directory

如果文件存在于提供的路径中,我想检查我的应用程序。文件名可以是任何例如:pic.jpg,pic.txt,pic1.txt,pic2.jpg等。 我需要检查路径中是否存在“pic”名称。只检查'pic'是否存在或pic +任何内容+ .jpg或pic.anything.txt存在于vb.net。

请帮忙。

3 个答案:

答案 0 :(得分:2)

您需要查看File.Exists方法。别忘了,这只适用于在服务器上查找文件,而不是客户端。在客户端查找文件完全不同。

答案 1 :(得分:2)

您可以获取给定目录中的文件列表,然后检查文件名以查看您要查找的文本片段是否在其中任何一个中。假设您希望在测试中包含扩展名,并且您不关心它是大写还是小写:

Function FilenameFragmentExists(srcDir As String, fragment As String) As Boolean
    Dim files() As String = IO.Directory.GetFiles(srcDir)
    Dim found As Boolean = False
    For i = 0 To files.Length - 1
        If IO.Path.GetFileName(files(i)).IndexOf(fragment, StringComparison.OrdinalIgnoreCase) > -1 Then
            found = True
            Exit For
        End If
    Next

    Return found

End Function

或者您可以使用LINQ在一行中执行此操作,如果您使用.NET框架> = 4,则可以使用.EnumerateFiles代替.GetFiles,这可能更快:

Function FilenameFragmentExists(srcDir As String, fragment As String) As Boolean
    Return IO.Directory.EnumerateFiles(srcDir).Any(Function(f) IO.Path.GetFileName(f).IndexOf(fragment, StringComparison.OrdinalIgnoreCase) >= 0)
End Function

答案 2 :(得分:1)

您应该使用Directory.GetFiles(path, pattern)检查它是否返回与您的模式对应的某些文件。例如

Dim files = Directory.GetFiles("C:\temp", "*.jpg")
if files.Length > 0 Then
   Console.WriteLine("Directory contains " + files.Length + " with the required pattern")
Else
   Console.WriteLine("Directory doesn't contain any file with the required pattern")
End if

在第二个参数中,您可以按照用于目录列表的通常通配符规则传递任何类型的模式