以下代码示例了如何在一个指定的目录(包含目录列表)中查找需要的文件.
首先,我们需要建立一个自己的文件类,用于文件和目录
Public Class myFileInfo
'@自定义的myFileInfo类,用于保存文件(包含目录)的信息
Public FullFileName As String '满文件名( 包含路径)
Public FileAttribute As System.IO.FileAttributes '文件的属性
End Class
这个很简单的类也可以用结构代替
'@文件查找功能:查找指定目录列表中的文件名,结果返回包含此文件名的对象
'@输入:lstDirName,包含指定目录的字符串数组列表 ,FileName,指定要查找的文件名
'@输出ArrayList对象,内含自定义的FileInfo对象
'示例:Dim tmpSyn As New SyncDirectory(Label1)
'@ Dim tmpStr(2) As String
'@ tmpStr(0) = "F:/2006天"
'@ tmpStr(1) = "F:/2005夏"
'@ Dim tmpArray As ArrayList = tmpSyn.FindFileInDirectory(tmpStr, "图片")
Public Overridable Function FindFileInDirectory(ByVal lstDirName As String(), ByVal FileName As String) As ArrayList
Dim dirArray As New ArrayList '要返回的内容
Dim subArray As ArrayList '来自子级的内容
Try
Dim i As Integer
For Each tmpStrDir As String In lstDirName
subArray = FindFileInDirectory(tmpStrDir, FileName)
For i = 0 To subArray.Count - 1
'将子级的加入到当前级
dirArray.Add(subArray(i))
Next
Next
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
Return dirArray
End Function
'@文件查找功能:查找指定目录列表中的文件名,结果返回包含此文件名的对象
'@输入:DirName,包含指定目录的字符串 ,FileName,指定要查找的文件名
'@输出ArrayList对象,内含自定义的FileInfo对象
'@示例:Dim tmpArray As ArrayList = tmpSyn.FindFileInDirectory("F:/2005夏", "图片")
Public Overridable Function FindFileInDirectory(ByVal DirName As String, ByVal FileName As String) As ArrayList
Dim dirArray As New ArrayList '要返回的内容
Dim subArray As ArrayList '来自子级的内容
Try
Dim i As Integer
Dim tmpD As New DirectoryInfo(DirName)
Dim tmpFiles As FileInfo() = tmpD.GetFiles() ''取源文件夹,返回的是Fileinfo()
For Each tmpFile As FileInfo In tmpFiles
''循环查询所有的文件
If tmpFile.Name.IndexOf(FileName) >= 0 Then
'如果找到包含的,则加入到Arraylist中
Dim tmpFileInfo As New myFileInfo
With tmpFileinfo
.FullFileName = tmpFile.FullName
.FileAttribute = tmpFile.Attributes
End With
dirArray.Add(tmpFileInfo)
End If
Next
Dim tmpDirs As DirectoryInfo() = tmpD.GetDirectories()
For Each tmpDir As DirectoryInfo In tmpDirs
subArray = FindFileInDirectory(tmpDir.FullName, FileName) '递归处理所有的目录
If tmpDir.Name.IndexOf(FileName) >= 0 Then
'如果目录名也包含FileName,则也加入到arraylist中
Dim tmpFileInfo As New myFileInfo
With tmpFileinfo
.FullFileName = tmpDir.FullName
.FileAttribute = tmpDir.Attributes
End With
dirArray.Add(tmpFileInfo)
End If
For i = 0 To subArray.Count - 1
'将子级的加入到当前级
dirArray.Add(subArray(i))
Next
Next
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
Return dirArray
End Function
两个方法的注释都已经很详细了,不多说,自己看代码
如果有更好的方法可以给我讲讲.让我能不断进步