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

转自CSDN

     ' 'Invoke   :   funcSearchFile("e:\flash",   "*bb*cc*.*")   
     ' 参数说明:dir   路径名称,fileName   待查找类似文件名称   
     Private   Function  funcSearchFile( ByVal   dir   As   String ByVal  fileName  As   String As   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,  True Then
                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   String ByVal  dirFile  As   String ByVal  First  As   Boolean As   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  -   1 Then
                        
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

你可能感兴趣的:(VB.NET)