具體做法是:編寫一個(gè)掃描文件夾(Scan),當(dāng)遇到子文件夾時(shí)中斷當(dāng)前文件夾的掃描,開始掃描子文件夾,即調(diào)用過程本身,如子文件夾中還有子文件夾,就采取相同的方法繼續(xù)調(diào)用過程,直至文件夾(子文件夾)中不再含有子文件夾為止。
程序涉及的控件及需改變的缺省屬性如下:
1.一個(gè)DriveListBox控件。
2.一個(gè)DirListBox控件。
3.一個(gè)ListBox控件,該控件用來顯示查找到的文件。
4.兩個(gè)CommandButton控件。
5.一個(gè)StatusBar控件,該控件用來顯示查找到的文件個(gè)數(shù),Style屬性置為1,SimpleText屬性置為“”。
6.兩個(gè)OptionButton控件,其中Option1的Value屬性置為True。
7.兩個(gè)TextBox控件,Text屬性都置為“”,其中Text1用來設(shè)置待查找文件的文件名,Text2用來設(shè)置待查找文件的擴(kuò)展名,Text2的Enabled置為False,MaxLength屬性置為3。
8.兩個(gè)Frame控件。
以下是程序清單:
Option Explicit
Public Sub scan(a As String)
Dim filename As String
Dim nd As Integer
Dim fold() As String
Dim n As Integer
filename = Dir(a)
Do While filename <> “”
If Option1.Value =True Then
If LCase(filename) = LCase(Text1.Text) Then
List1.AddItem (a & filename)
End If
Else
If LCase(Right(filename, 3)) = LCase(Text2.Text) Then
List1.AddItem (a & filename)
End If
End If
filename = Dir
Loop
filename = Dir(a, vbDirectory)
Do While filename <> “”
If filename <>“.” And filename <> “..” Then
If GetAttr(a & filename) = vbDirectory Then
nd = nd + 1
ReDim Preserve fold(nd)
fold(nd) = a & filename
End If
End If
filename = Dir
DoEvents
Loop
For n = 1 To nd
scan fold(n) & “\”
Next
If List1.ListCount = 0 Then
StatusBar1.SimpleText = “No file discovery”
Else
StatusBar1.SimpleText = List1.ListCount & “file(s) discovery”
End If
End Sub
Private Sub Command1_Click()
Dim searchfold As String
List1.Clear
StatusBar1.SimpleText = “”
If Right(Dir1.Path, 1) = “\” Then
searchfold = Left(Dir1.Path, 2)
Else
searchfold = Dir1.Path
End If
Me.MousePointer = vbHourglass
scan searchfold & “\”
Me.MousePointer = vbDefault
End Sub
Private Sub Command2_Click()
Unload Me
End Sub
Private Sub Drive1_Change()
On Error GoTo a
Dir1.Path = Drive1.Drive
Exit Sub
a:
If Left(Drive1.Drive, 1) = “a” Then
MsgBox “Floppy drive is not be ready!”, vbCritical
End If
End Sub
Private Sub Option1_Click()
Text1.Enabled = True
Text2.Enabled = False
End Sub
Private Sub Option2_Click()
Text1.Enabled = False
Text2.Enabled = True
End Sub
最后,再對程序代碼作進(jìn)一步的說明:
1.過程(Scan)的參數(shù)a由DirListBox控件的選項(xiàng)決定,可以是硬盤盤符,如C:\(掃描整個(gè)分區(qū)),也可以是目錄路徑,如C:\Windows(僅掃描該目錄)。
2.Dir函數(shù)是過程中的關(guān)鍵。該函數(shù)的作用是查找任何驅(qū)動(dòng)器上的文件或目錄。如果調(diào)用帶參數(shù)的Dir函數(shù)再調(diào)用不帶參數(shù)的Dir函數(shù),則函數(shù)將從當(dāng)前要搜索的目錄中返回與上一次指定參數(shù)相匹配的下一個(gè)文件,這就使遍歷一個(gè)目錄中的所有文件成為可能。
3.程序中的錯(cuò)誤處理語句:On Error GoTo a不能省略。這是因?yàn)槿绻涷?qū)中沒有軟盤,Drive1_Change()過程會(huì)出錯(cuò)。
聯(lián)系客服