top
Loading...
VB6.0中Dir()函數的使用方法
VB中提供的成員函數dir返回一個滿足指定類型或指定文件屬性的文件名,目錄名或卷標名。dir函數的語法結構為:

Member Function Dir[(Pathname[,attributes])] As String

其中參數Pathname通常為一個文件名,此文件名可以包含目錄或文件夾以及驅動器符號,如果沒有找到指定的Pathname,dir語句將返回一個零長度的字符串(""),支持多字符通配符和單字符通配符。需要注意的是:

1.在程序中第一次調用dir函數時必須指明pathname參數,否則會產生運行錯誤;

2.dir函數只返回滿足pathname條件的第一個文件名或目錄名,要得到其余滿足條件的文件名,可以再次調用dir函數而不用帶參數,當沒有匹配的文件,dir函數返回零長度的字符串,而此時如果再想調用dir函數,必須指定pathname參數,否則出現運行錯誤;

3.在沒有檢索到滿足當前pathname匹配條件的文件時可以改變新的pathname值,但不能再次遞歸調用dir函數;

4.調用dir函數時將屬性參數設置為vbdirectory并不能連續返回子目錄,僅返回當前目錄下的目錄。

例1

Public Sub main()
Dim filenames As String
filenames = Dir("c:", vbNormal + vbDirectory)
Do While filenames <> ""
Debug.Print filenames
filenames = Dir ’再次調用dir函數,此時可以不帶參數
Loop
End Sub

例2

’將符合條件的條件和目錄分類,存到對應的數組中,完成輸出
Public Sub main()
Dim FileNames As String, DirNames As String
Dim FileArray() As String, DirArray() As String
Dim TotalDirs As Integer, TotalFiles As Integer
Dim iLoop As Integer

DirNames = "c:"
FileNames = Dir(Dirname, vbNormal + vbDirectory)
Do While FileNames <> ""
If FileNames <> "." And FileNames <> ".." Then
If (GetAttr(Dirname & FileNames) And vbDirectory) = vbDirectory Then
TotalDirs = TotalDirs + 1
ReDim Preserve DirArray(TotalDirs)
DirArray(TotalDirs) = FileNames
Else
TotalFiles = TotalFiles + 1
ReDim Preserve FileArray(TotalFiles)
FileArray(TotalFiles) = FileNames
End If
End If
FileNames = Dir
Loop
’這里可對數組進行排序,此處略
Debug.Print "___Directories______"
For iLoop = 0 To UBound(DirArray)
Debug.Print DirArray(iLoop)
Next
Debug.Print "___Files____"
For iLoop = 0 To UBound(FileArray)
Debug.Print FileArray(iLoop)
Next
End Sub

Dir函數可以用在不確定本機是否存在某文件或目錄的前提下后臺幫助用戶尋找并提示,然后運用該文件或目錄完成指定操作,如run等。但是由于不能遞歸使用,這就意味著不能一次查找整棵樹,更為糟糕的是,vb并沒有提供用來在多個不知名的目錄中查找某一給定的文件或文件簇的任何工具。幸運的win32api提供了一些文件查找的方法(SearchPath,FindFirstFile,FindNextFile等),此外還可利用已有的文件查找知識為用戶創建一個listbox控件,用來顯示所查找到的文件,以便用戶能選中其一。
作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗