现在的位置: 首页 > 综合 > 正文

VB.NET 在指定文件夹查找文件 类似的文件

2012年10月17日 ⁄ 综合 ⁄ 共 2873字 ⁄ 字号 评论关闭

转自CSDN

    ''Invoke   :   funcSearchFile("e:\flash",   "*bb*cc*.*")   
    '参数说明:dir   路径名称,fileName   待查找类似文件名称   
    Private Function funcSearchFile(ByVal dir As StringByVal fileName As StringAs Boolean
        
If Not dir.LastIndexOf("\"= dir.Length - 1 Then
            
dir = dir & "\"
        
End If
        
Dim files() As String
        
Try
            files 
= System.IO.Directory.GetFiles(dir)
        
Catch ex As Exception
            MessageBox.Show(ex.Message.ToString, 
"出错信息")
            
Return False
        
End Try

        For Each s As String In files
            
If funcCompareFileName(fileName, s, TrueThen
                Console.WriteLine(s)
            
End If
        
Next
        
Dim folders() As String
        folders 
= System.IO.Directory.GetDirectories(dir)
        
For Each s2 As String In folders
            funcSearchFile(s2, fileName)
        
Next
    
End Function

    Private Function funcCompareFileName(ByVal searchFile As StringByVal dirFile As StringByVal First As BooleanAs Boolean

        Dim searchFile2 As String = searchFile   '备份   
        Dim dirFile2 As String                                   '备份   
        dirFile2 = IIf(dirFile.IndexOf("\">= 0, dirFile.Substring(dirFile.LastIndexOf("\"+ 1), dirFile)

        ''全体文件   
        If searchFile2 = "*.*" Then
            
Return True
        
End If

        Dim kk As Integer
        
Dim fileName As String
        
Dim col As New Collection

        If searchFile2.IndexOf("*"> 0 Then
            fileName 
= searchFile2
            
If First Then   '是否是第一次比较该文件   
                If fileName.Substring(0, fileName.IndexOf("*")) <> dirFile2.Substring(0, fileName.IndexOf("*")) Then
                    
Return False
                
End If
            
End If
            
While fileName.IndexOf("*">= 0
                kk 
= dirFile.IndexOf(fileName.Substring(0, fileName.IndexOf("*")))
                
If kk >= 0 Then
                    
If kk - searchFile.IndexOf("*">= -1 Then
                        fileName 
= fileName.Substring(fileName.IndexOf("*"+ 1)
                        col.Add(kk)
                    
Else
                        
Return False
                    
End If
                
Else
                    
Return False
                
End If
            
End While

            ''判断所有的匹配是否按升序排列   
            Dim i As Integer
            
For i = 1 To col.Count
                
If i > 1 Then
                    
If col(i) < col(i - 1Then
                        
Return False
                    
End If
                
End If
            
Next
            
Return True

        ElseIf searchFile2.IndexOf("*"= 0 Then
            
Return funcCompareFileName(searchFile2.Substring(1, searchFile2.Length - 1), dirFile2, False)
        
Else   '完整匹配文件名称   
            If searchFile2 = dirFile2 Then
                
Return True
            
Else
                
Return False
            
End If
        
End If
    
End Function

抱歉!评论已关闭.