亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

如何在VB中實現目錄遍歷

2019-11-18 17:34:46
字體:
來源:轉載
供稿:網友
一、API函數的聲明、自定義數據類型及常量的定義
----注意:API函數的聲明應在應用程序的代碼模塊中進行,且一條聲明必須放在一行中'API函數的聲明
PublicDeclareFunctionFindFirstFileLib
"kernel32"Alias"FindFirstFileA"
(ByVallpFileNameAsString,
lpFindFileDataAsWIN32_FIND_DATA)AsLong
PublicDeclareFunctionFindNextFileLib
"kernel32"Alias"FindNextFileA"
(ByValhFindFileAsLong,lpFindFileData
AsWIN32_FIND_DATA)AsLong
PublicDeclareFunctionFindCloseLib
"kernel32"(ByValhFindFileAsLong)AsLong

'最大路徑長度和文件屬性常量的定義
PublicConstMAX_PATH=260
PublicConstFILE_ATTRIBUTE_ARCHIVE=&H20
PublicConstFILE_ATTRIBUTE_COMPublicTypeFILETIME
dwLowDateTimeAsLong
dwHighDateTimeAsLong
EndType

PublicTypeWIN32_FIND_DATA
dwFileAttributesAsLong
ftCreationTimeAsFILETIME
ftLast
accessTimeAsFILETIME
ftLastWriteTimeAsFILETIME
nFileSizeHighAsLong
nFileSizeLowAsLong
dwReserved0AsLong
dwReserved1AsLong
cFileNameAsString*MAX_PATH
cAlternateAsString*14
EndType

二、去掉固定長度字符串右邊的NULL字符(ASCII值為0)和SPACE字符(ASCII值為32)
----由于數據類型WIN32_FIND_DATA的cFileName元素為定長數據類型且在執行函數FindFirstFile和FindNextFile后會有NULL字符,因此需去掉其中的無效字符。
PublicFunctionfDelInvaildChr
(strAsString)AsString
OnErrorResumeNext
Fori=Len(str)To1Step-1
IfAsc(Mid(str,i,1))<>
0AndAsc(Mid(str,i,1))<>32Then
fDelInvaildChr=Left(str,i)
ExitFor
EndIf
Next
EndFunction

三、遍歷主函數
----參數說明:
strPathName要遍歷的目錄
objList使用VB的內部控
件ListBox來存放遍歷得到的路徑,之所以
不使用字符串數組是因為數組大小不好定義

PublicSubsDirTraversal
(ByValstrPathNameAsString,ByRefobjListAsListBox)
DimsSubDir(200)AsString
'存放當前目錄下的子目錄,下標可根據需要調整
DimiIndexAsInteger
'子目錄數組下標
DimiAsInteger
'用于循環子目錄的查找

DimlHandleAsLong
'FindFirstFileA的句柄
DimtFindDataAsWIN32_FIND_DATA'
DimstrFileNameAsString'文件名

OnErrorResumeNext
'初始化變量
i=1
iIndex=0
tFindData.cFileName=
""'初始化定長字符串

lHandle=FindFirstFile
(strPathName&"/*.*",tFindData)
IflHandle=0Then'查詢結束或發生錯誤
ExitSub
EndIf
strFileName=fDelInvaildChr(tFindData.cFileName)
IftFindData.dwFileAttributes=&H10Then'目錄
IfstrFileName<>"."AndstrFileName<>".."Then
iIndex=iIndex 1
sSubDir(iIndex)=strPathName
&"/"&strFileName'添加到目錄數組
EndIf
Else
objList.AddItemstrPathName
&"/"&strFileName
EndIf
'循環查找下一個文件,直到結束
DoWhileTrue
tFindData.cFileName=""
IfFindNextFile(lHandle,tFindData)
=0Then'查詢結束或發生錯誤
FindClose(lHandle)
ExitDo
Else
strFileName=fDelInvaildChr
(tFindData.cFileName)
IftFindData.dwFileAttributes=&H10Then
IfstrFileName<>"."AndstrFileName<>".."Then
iIndex=iIndex 1
sSubDir(iIndex)=strPathName
&"/"&strFileName'添加到目錄數組
EndIf
Else
objList.AddItemstrPathName&"/"&strFileName
EndIf
EndIf
Loop
'如果該目錄下有目錄,則根據目錄數組遞歸遍歷
IfiIndex>0Then
Fori=1ToiIndex
sDirTraversalsSubDir(i),objList
Next
EndIf
EndSub

----利用以上遍歷方法,讀者可以根據數據類型WIN32_FIND_DATA的dwFileAttributes、ftCreationTime、ftLastAccessTime、ftLastWriteTime元素來擴充文件查詢功能(按文件屬性、創建日期、最后修改日期、最后訪問日期等不同條件的查詢)。



完整代碼:

'''''''''''''''''''''''''''''''''''''''''''
'API函數的聲明、常量、自定義數據類型
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'API函數的聲明
PublicDeclareFunctionFindFirstFileLib"kernel32"Alias"FindFirstFileA"(ByVallpFileNameAsString,lpFindFileDataAsWIN32_FIND_DATA)AsLong
PublicDeclareFunctionFindNextFileLib"kernel32"Alias"FindNextFileA"(ByValhFindFileAsLong,lpFindFileDataAsWIN32_FIND_DATA)AsLong
PublicDeclareFunctionFindCloseLib"kernel32"(ByValhFindFileAsLong)AsLong
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'最大路徑長度和文件屬性常量的定義
PublicConstMAX_PATH=260
PublicConstFILE_ATTRIBUTE_ARCHIVE=&H20
PublicConstFILE_ATTRIBUTE_COMPRESSED=&H800
PublicConstFILE_ATTRIBUTE_DIRECTORY=&H10
PublicConstFILE_ATTRIBUTE_HIDDEN=&H2
PublicConstFILE_ATTRIBUTE_NORMAL=&H80
PublicConstFILE_ATTRIBUTE_READONLY=&H1
PublicConstFILE_ATTRIBUTE_SYSTEM=&H4
PublicConstFILE_ATTRIBUTE_TEMPORARY=&H100

'自定義數據類型FILETIME和WIN32_FIND_DATA的定義
PublicTypeFILETIME
dwLowDateTimeAsLong
dwHighDateTimeAsLong
EndType

PublicTypeWIN32_FIND_DATA
dwFileAttributesAsLong
ftCreationTimeAsFILETIME
ftLastAccessTimeAsFILETIME
ftLastWriteTimeAsFILETIME
nFileSizeHighAsLong
nFileSizeLowAsLong
dwReserved0AsLong
dwReserved1AsLong
cFileNameAsString*MAX_PATH
cAlternateAsString*14
EndType

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'去掉固定長度字符串右邊的NULL字符(ASCII值為0)和SPACE字符(ASCII值為32)函數
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
PublicFunctionfDelInvaildChr(strAsString)AsString
OnErrorResumeNext
Fori=Len(str)To1Step-1
IfAsc(Mid(str,i,1))<>0AndAsc(Mid(str,i,1))<>32Then
fDelInvaildChr=Left(str,i)
ExitFor
EndIf
Next
EndFunction

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'遍歷主函數
'參數說明:
'strPathName要遍歷的目錄
'objList使用VB的內部控件ListBox來存放遍歷得到的路徑,之所以
'不使用字符串數組是因為數組大小不好定義
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
PublicSubsDirTraversal(ByValstrPathNameAsString,ByRefobjListAsListBox)
DimsSubDir(200)AsString'存放當前目錄下的子目錄,下標可根據需要調整
DimiIndexAsInteger'子目錄數組下標
DimiAsInteger'用于循環子目錄的查找

DimlHandleAsLong'FindFirstFileA的句柄
DimtFindDataAsWIN32_FIND_DATA'
DimstrFileNameAsString'文件名

OnErrorResumeNext
'初始化變量
i=1
iIndex=0
tFindData.cFileName=""'初始化定長字符串

lHandle=FindFirstFile(strPathName&"/*.*",tFindData)
IflHandle=0Then'查詢結束或發生錯誤
ExitSub
EndIf
strFileName=fDelInvaildChr(tFindData.cFileName)
IftFindData.dwFileAttributes=&H10Then'目錄
IfstrFileName<>"."AndstrFileName<>".."Then
iIndex=iIndex 1
sSubDir(iIndex)=strPathName&"/"&strFileName'添加到目錄數組
EndIf
Else
objList.AddItemstrPathName&"/"&strFileName
EndIf
'循環查找下一個文件,直到結束
DoWhileTrue
tFindData.cFileName=""
IfFindNextFile(lHandle,tFindData)=0Then'查詢結束或發生錯誤
FindClose(lHandle)
ExitDo
Else
strFileName=fDelInvaildChr(tFindData.cFileName)
IftFindData.dwFileAttributes=&H10Then
IfstrFileName<>"."AndstrFileName<>".."Then
iIndex=iIndex 1
sSubDir(iIndex)=strPathName&"/"&strFileName'添加到目錄數組
EndIf
Else
objList.AddItemstrPathName&"/"&strFileName
EndIf
EndIf
Loop
'如果該目錄下有目錄,則根據目錄數組遞歸遍歷
IfiIndex>0Then
Fori=1ToiIndex
sDirTraversalsSubDir(i),objList
Next
EndIf
EndSub->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲黄在线观看| 欧美精品在线第一页| 久久久久久亚洲精品中文字幕| 亚洲伊人一本大道中文字幕| 热久久免费视频精品| 欧美日韩国产一区中文午夜| 国产精品久久久久久婷婷天堂| 日韩在线观看免费高清完整版| 黑人巨大精品欧美一区二区三区| 亚洲福利精品在线| 亚洲精品91美女久久久久久久| 国产一区二区三区在线观看视频| 国产精品高潮呻吟视频| 日韩精品极品视频免费观看| 亚洲丝袜在线视频| 日韩性xxxx爱| 成人乱色短篇合集| 久久最新资源网| 亚洲一级一级97网| 国产日韩中文字幕在线| 91a在线视频| 97碰碰碰免费色视频| 亚洲专区国产精品| 美女国内精品自产拍在线播放| 日韩成人激情在线| 一夜七次郎国产精品亚洲| 欧美日韩国产一区在线| 亚洲国产欧美一区二区三区久久| 欧美日韩加勒比精品一区| 国产成人福利视频| 欧美色视频日本版| 国产精自产拍久久久久久蜜| 亚洲精品电影网站| 亚洲aⅴ男人的天堂在线观看| 91亚洲精品视频| 日韩高清电影好看的电视剧电影| 亚洲成人av在线播放| 中文字幕亚洲二区| 91超碰中文字幕久久精品| 欧美专区福利在线| 国产精品免费视频xxxx| 欧美激情一区二区三级高清视频| 久久成人精品视频| 亚洲无限乱码一二三四麻| 日韩精品有码在线观看| 日韩va亚洲va欧洲va国产| 欧美激情精品久久久久久蜜臀| 一区二区av在线| 国产日韩精品在线播放| 亚洲在线第一页| 成人a在线视频| 久久琪琪电影院| 中文字幕在线看视频国产欧美| 亚洲第一天堂无码专区| 日韩精品高清在线| 原创国产精品91| 久久久久久久久国产| 成人福利视频网| 一区国产精品视频| 欧美在线一级va免费观看| 久久综合国产精品台湾中文娱乐网| 欧美xxxx14xxxxx性爽| www亚洲精品| 亚洲国产精品热久久| 在线观看国产精品91| 中文字幕日本精品| 91大神福利视频在线| 97在线视频国产| 7777精品视频| 国产精品高清免费在线观看| 91精品国产91久久久久久最新| 成人av资源在线播放| 欧美黑人国产人伦爽爽爽| 亚洲美女精品成人在线视频| 久久综合亚洲社区| 欧美黑人巨大精品一区二区| 国产一区二区三区日韩欧美| 日韩在线观看免费高清完整版| 亚洲第一级黄色片| 91精品久久久久久久| 奇米成人av国产一区二区三区| 自拍偷拍亚洲欧美| 欧美性生交xxxxx久久久| 亚洲成年人在线播放| 亚洲欧美日韩在线高清直播| 日本精品视频在线播放| 日本精品免费观看| 操人视频在线观看欧美| 96sao精品视频在线观看| 91欧美日韩一区| 在线观看久久av| 中文字幕亚洲国产| 久久人91精品久久久久久不卡| 成人亚洲欧美一区二区三区| 欧美一级bbbbb性bbbb喷潮片| 欧美成人小视频| 51ⅴ精品国产91久久久久久| 色婷婷av一区二区三区久久| 亚洲成**性毛茸茸| 成人黄色av播放免费| 久久夜色精品国产欧美乱| 深夜成人在线观看| 一区二区在线免费视频| 日韩电视剧免费观看网站| 精品国产一区二区在线| 亚洲人午夜精品| 亚洲国产精品久久久久秋霞不卡| 中文字幕在线国产精品| 欧美二区乱c黑人| 色av中文字幕一区| 亚洲深夜福利网站| 日韩中文娱乐网| 欧美电影在线播放| 一本色道久久综合亚洲精品小说| 欧美日韩xxx| 自拍偷拍亚洲在线| 亚洲国产精品字幕| 色偷偷偷亚洲综合网另类| 国模视频一区二区三区| 国产成人精品视频在线| 国产精品福利在线观看网址| 2019中文字幕在线观看| 国产精品网站大全| 国产网站欧美日韩免费精品在线观看| 国产精品久久久久久久久久久新郎| 欧美高清视频一区二区| 在线观看国产精品日韩av| 亚洲图片在区色| 亚洲在线视频福利| 久久久久99精品久久久久| 97成人精品视频在线观看| 国产一区二区视频在线观看| 成人伊人精品色xxxx视频| 久久夜色精品国产| 亚洲欧洲成视频免费观看| 国产日韩精品一区二区| 91夜夜未满十八勿入爽爽影院| 国产精品久久久亚洲| 午夜精品蜜臀一区二区三区免费| 国产免费一区二区三区香蕉精| 精品久久久久久中文字幕大豆网| 欧美日韩中文在线观看| 欧美另类第一页| 91精品国产91久久| 国产欧亚日韩视频| 久久99久久亚洲国产| 亚洲国产一区二区三区在线观看| 国产精品久久久久一区二区| 97av在线影院| 亚洲成人激情在线观看| 国产欧美一区二区三区视频| 亚洲人成五月天| 亚洲色图欧美制服丝袜另类第一页| 亚洲国产天堂久久国产91| 亚洲欧美日韩天堂一区二区| 日韩欧美综合在线视频| 成人黄色激情网| 亚洲午夜av久久乱码| 欧美视频二区36p| 日韩av一区二区在线观看| 亚洲成人亚洲激情| 亚洲日本中文字幕| 亚洲欧洲av一区二区| 黑人极品videos精品欧美裸|