说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

VB如何在VB中实现目录遍历

HTML文档下载 WORD文档下载 PDF文档下载
VB如何在VB中实现目录遍历
中 兴 新 太 数 据 通 信 有 限 公 司
张 易 平
---- 看 了 九 九 年 第 七 期E18 版 中《 子 目 录 级 文 件 查 询 的 实 现》 一 文, 为 便 于 读 者 方 便 使 用, 本 人 将 在VB 中 实 现 目 录 遍 历 需 要 注 意 的 地 方 及 代 码 提 供 给 读 者, 希 望 能 对 大 家 有 所 帮 助。 以 下 代 码 在PWIN97、VB6 下 测 试 通 过。

一、API 函 数 的 声 明、 自 定 义 数 据 类 型 及 常 量 的 定 义
---- 注 意:API 函 数 的 声 明 应 在 应 用 程 序 的 代 码 模 块 中 进 行, 且 一 条 声 明 必 须 放 在 一 行 中'API 函 数 的 声 明
Public Declare Function FindFirstFile Lib
"kernel32" Alias "FindFirstFileA"
(ByVal lpFileName As String,
lpFindFileData As WIN32_FIND_DATA) As Long
Public Declare Function FindNextFile Lib
"kernel32" Alias "FindNextFileA"
(ByVal hFindFile As Long, lpFindFileData
As WIN32_FIND_DATA) As Long
Public Declare Function FindClose Lib
"kernel32" (ByVal hFindFile As Long) As Long

'最大路径长度和文件属性常量的定义
Public Const MAX_PATH = 260
Public Const FILE_ATTRIBUTE_ARCHIVE = &H20
Public Const FILE_ATTRIBUTE_COMPRESSED = &H800
Public Const FILE_ATTRIBUTE_DIRECTORY = &H10
Public Const FILE_ATTRIBUTE_HIDDEN = &H2
Public Const FILE_ATTRIBUTE_NORMAL = &H80
Public Const FILE_ATTRIBUTE_READONLY = &H1
Public Const FILE_ATTRIBUTE_SYSTEM = &H4
Public Const FILE_ATTRIBUTE_TEMPORARY = &H100

'自定义数据类型FILETIME和WIN32_FIND_DATA的定义
Public Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type

Public Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type
二、 去 掉 固 定 长 度 字 符 串 右 边 的NULL 字 符(ASCII 值 为0) 和SPACE 字 符(ASCII 值 为32)
---- 由 于 数 据 类 型WIN32_FIND_DATA 的cFileName 元 素 为 定 长 数 据 类 型 且 在 执 行 函 数FindFirstFile 和FindNextFile 后 会 有NULL 字 符, 因 此 需 去 掉 其 中 的 无 效 字 符。
Public Function fDelInvaildChr
(str As String) As String
On Error Resume Next
For i = Len(str) To 1 Step -1
If Asc(Mid(str, i, 1)) < >
0 And Asc(Mid(str, i, 1)) <> 32 Then
fDelInvaildChr = Left(str, i)
Exit For
End If
Next
End Function
三、 遍 历 主 函 数
---- 参 数 说 明:
strPathName要遍历的目录
objList 使用VB的内部控
件ListBox来存放遍历得到的路径,之所以
不使用字符串数组是因为数组大小不好定义

Public Sub sDirTraversal
(ByVal strPathName As String, ByRef objList As ListBox)
Dim sSubDir(200) As String
'存放当前目录下的子目录,下标可根据需要调整
Dim iIndex As Integer
'子目录数组下标
Dim i As Integer
'用于循环子目录的查找

Dim lHandle As Long
'FindFirstFileA的句柄
Dim tFindData As WIN32_FIND_DATA '
Dim strFileName As String '文件名

On Error Resume Next
'初始化变量
i = 1
iIndex = 0
tFindData.cFileName =
"" '初始化定长字符串

lHandle = FindFirstFile
(strPathName & "\*.*", tFindData)
If lHandle = 0 Then '查询结束或发生错误
Exit Sub
End If
strFileName = fDelInvaildChr(tFindData.cFileName)
If tFindData.dwFileAttributes = &H10 Then '目录
If strFileName <> "." And strFileName <> ".." Then
iIndex = iIndex + 1
sSubDir(iIndex) = strPathName
& "\" & strFileName '添加到目录数组
End If
Else
objList.AddItem strPathName
& "\" & strFileName
End If
'循环查找下一个文件,直到结束
Do While True
tFindData.cFileName = ""
If FindNextFile(lHandle, tFindData)
= 0 Then '查询结束或发生错误
FindClose (lHandle)
Exit Do
Else
strFileName = fDelInvaildChr
(tFindData.cFileName)
If tFindData.dwFileAttributes = &H10 Then
If strFileName <> "." And strFileName <> ".." Then
iIndex = iIndex + 1
sSubDir(iIndex) = strPathName
& "\" & strFileName '添加到目录数组
End If
Else
objList.AddItem strPathName & "\" & strFileName
End If
End If
Loop
'如果该目录下有目录,则根据目录数组递归遍历
If iIndex > 0 Then
For i = 1 To iIndex
sDirTraversal sSubDir(i), objList
Next
End If
End Sub
---- 利 用 以 上 遍 历 方 法, 读 者 可 以 根 据 数 据 类 型WIN32_FIND_DATA 的dwFileAttributes、ftCreationTime、ftLastAccessTime、ftLastWriteTime 元 素 来 扩 充 文 件 查 询 功 能( 按 文 件 属 性、 创 建 日 期、 最 后 修 改 日 期、 最 后 访 问 日 期 等 不 同 条 件 的 查 询)。
联想K900评测:英特尔X86兼容性明显提升(组图) 小米手机-HAXLR8on硬件黑客马拉松:32小时的创客狂欢 鲍尔默宣布下台后,微软应该做好这几件事情 IGT张奇伟:从空间物理到博彩游戏研发 Bing即将推出新功能 用户可直接在搜索结果页购买商品 【开源专访】郑晔谈Moco框架的前世今生以及Java编程之道 CTO俱乐部第108期下午茶:电商在微信上的现状与未来 SDCC 2013讲师议题确定 门票即将售罄(图) 简化工作流程,10款必备的HTML5开发工具 六大领域考评鲍尔默微软掌舵能力,只一“C”尔? 剥离自雅虎的Hortonworks:低调发展,三年融资近1亿美元 Google的中国梦如何死于傲慢与不得力公关 [回顾]昨日黄花,那些被人们遗忘的11个操作系统 管理企业级API的7个最佳实践 Java 与 .NET 的平台发展之争 英特尔正在开发3D深度感知摄像头 可读出人类的情绪等 从数据平台到运营平台:国产开源移动统计Cobub Razor发布0.6版本 八月网络事故频现,CN域名遭最大规模网络攻击 Google云平台或将成为Amazon最大竞争对手 Camera360宣布完成1800万美元B轮融资 利用ZK Ajax框架 高效扩展Web App Web开发者需养成的8个好习惯 GitHub工程师专访:奶昔+海象+游泳池=开源 Paymill发布移动SDK,实现应用内直接支付 免费到付费:全球第二开源Web Server Nginx“堕入”商业化 乐视发布新版智能电视操作系统LetvUI 2.3—Schnauzer 进步还是灾难的开始?科学家首次通过互联网实现“心灵感应” 叫板Apple TV 谷歌发布Chromecast的iOS应用 性能提升100倍的秘密武器:一行SQL代码的妙用 60个开发者不容错过的免费资源库 专门针对初学者的Node.js教程 字符串str=" aaa ",如何变为"aaa" 怎么没有人理俺泥?? 关于dw的问题 如何读入数据库中的HTML格式的正文呢? 一个在阅读<<深入浅出MFC>>中遇到的问题 !!!!急 新手,说找不到mfc42d.dll文件 怎么没有人理俺泥?? 关于dw的问题 FAST.lib 2000 for windows是个什么东东 请问各位一个非常简单的问题 jdk和jvm 笨蛋 大家有什么建议吗? ASP.net如何刷新另一个页面 有一年delphi工作经验的程序员在全国各地的待遇如何?哪个城市有发展前途(钱途)? 100分求解!!!这个问题大家都来看,来者有分!!! 告诉我几个地方,给你几十分,简单吧 :-) 有没有关于VPN的书籍 Interbase源码分析 西瓜是Plmm哎~! 一个字符串替换的小问题。。。 还有一个问题需要问大家。。。特别急。。。 我变成了大家的一员 哪儿有在jbuilder中让三键鼠标可以使用滚动功能的驱程? 我想把ODBC的所有数据源列出来显示,不知道用哪个函数,谁能告诉,多谢了!来就有分 两台机器怎样用一个asdl宽带猫上网 我的vc编译器在我的一个程序就是不出自动变量填补功能,在其他程序上可以,不知为什么 我想把ODBC的所有数据源列出来显示,不知道用哪个函数,谁能告诉,多谢了!来就有分 怎么复制程序自己? 小小问题 我喜欢在等人的时候抽根烟!(在车站接哈尔滨来的哥们) 我想把ODBC的所有数据源列出来显示,不知道用哪个函数,谁能告诉,多谢了!来就有分 如何在SQL服务器端编程截获SQL客户端从工作站机器上的登陆 大家的公司都用ASP做什么?????我一直想问这个问题。 我只有 .ora文件,怎样恢复数据库? 急 关于游戏编程! J2EE的配置问题!! 请帮忙 !!!多谢了!一定给分!!!! 什么类型的共享软件最挣钱? 请教各位大虾一个DLL问题 如何恢复oracle数据库,先安装好oracle,之后再安装了develop2000,修改了oracle_home后oracle就启动不来了。 SDI程序中,如何在MainFrame里,得到文档的指针? Delphi入门提问 请教各位大虾一个DLL问题 是输入IE网址不对还是Apache对该文件common.jsp设置了访问权限? ${java_home}/.. 在国外发布的共享软件如何收钱? 实在不知道现在企业都是怎么招人的! 世界上会有简单而没有伤害的爱情吗? 急!!!如何将一个结构对象转成LPVOID 有XP的控件吗? 天!问卷调查竟是这个样子的! 一个很EASY的问题 注册表的问题,如何导入注册表文件? 氢氧化亚铁和氢氧化铁的转化在氢氧化亚铁被氧气氧化成氢氧化铁的过程中所形成的绿色的物质是什么?(它也是一种沉淀吗?)为什么会是绿色的? 写出下列物质的化学式: 1.氘核 2.瓦斯 3.氯仿写出下列物质的化学式: 1.氘核 2.瓦斯 3.氯仿 4.四氯甲烷 用什么东西清洗光学玻璃最好? 什么地方吸收酒精 蒸馏水对植物的作用蒸馏水对植物有什么好处,坏处? Mg3N2是什么 .酒的吸收的特点是: 分别放入12种必须元素的自来水和蒸馏水培养植物为什么长势不同? Mg3N2 是什么颜色的 水蒸气蒸馏的馏出液,为什么加入食盐饱和后再进行后续分离操作? 蒸馏水是干净的吗?蒸馏水能不能检测水质的? 三氯甲烷是什么 用途 要注意什么 初二物理——物态变化中熔点的知识1、北方建筑工人在秋冬季和泥时,常用食盐水来代替自来水,这是因为食盐具有( )A 较好的流动性 B 较好的挥发性 C 较低的熔点 D 较高的凝固点2、雪后路 水蒸气蒸馏试验中被蒸馏液体中的浓度应该越高越好对吗?加食盐以达到近饱和状态再进行蒸馏 这个理论对吗 看过你做减压蒸馏的帖子.请问,你用的是循环水真空泵,这样还用接安全系统么? 最好是以前没有的,重在创新,也可以是传统实验的改良,1 求初中生物的全部实验各位叔叔阿姨,哥哥姐姐,老师们,麻烦你们帮我把初中生物的全部实验发给我可以么?邮箱是:lrt2009@163.com谢了,顺便要是有生物历史所有知识点和会考复习资料的也顺便 关于用真空泵减压蒸馏,为什么说可以回收溶液?我看了装置图发现提气囗刚好在出液囗处,难道不会把蒸汽给抽走导致溶液回收少了吗? 我们有个生物创新实验比赛,要求环保,重在创新,老师让我参加,我不想让老师失望, 铁烧红放入水中冷却后为什么变硬 对有机混合物进行减压蒸馏时如何真选择真空泵 需要一个生物的创新实验,要求注明创新点和意义.而且这个实验最好是好做的,实验材料最好是生活中易见的. {在线等}过饱和蔗糖水加食盐后对蔗糖溶解有没有影响一杯过饱和蔗糖水,杯底有蔗糖.现加入一些氯化钠,氯化钠溶解后请问杯底的蔗糖会不会继续溶解? 减压蒸馏 真空泵的压力为什么不是液体表面的压力? 医院里的“安静”二字是要求声音不超过_____________ ,从减弱噪声的途径看,这是在______________处减弱噪声.是苏教版作业本上的, 在铜锌原电池中,将铜电极的氢离子增加一倍,则铜极上的电动势会变大还是变小?若加入氨水则电动势变大还是变小? SOCl2和碳共同构成锂电池的放电的电极反应方程式那可不可以告诉我充电时的方程式还有总的反应式啊, 2010初中生物实验如何做一定要2010年大啊就是今年中考会考的 锌和铂做心脏起搏器,为什么锌作负极,血液不是呈碱性吗?请详细说明,本人化学不好 锂电池的电极反应式高中能见到的一些锂电池的反应式 滴加什么试剂鉴别蚕丝制品 盐酸?硫酸?硝酸?氢氧化钠? 硫酸溶液中锌、铜电极接上回路,为什么锌失去的电子能定向移动到铜极?而氢离子能定向移动到铜极接受电子是什么力量使锌失去的电子定向移动到铜极处?若说电动势,哪电动势是电极两端有 心脏起搏器寿命快到能光换电池吗?另外国内哪里的价格便宜,大概几万元?83岁老人还可以装吗? 苛性钠露置于空气中逐渐变质 化学方程式 纳米硅酸盐涂料具有的化学性质是 Li-Al、FeS电池电极材料是什么?电极反应式是什么?LI比AL活泼,怎么能AL作负极 酒精会直接被胃吸收吗?喝酒后,被吸收的时间是多久? 化学提纯问题 我想问,为什么要用到蒸馏水工业上常用 FeCl3溶液腐蚀印刷电路板,欲从腐蚀后的废液中回收铜及制取纯净的FeCl3溶液,需要用下列试剂:①蒸馏水;②铁粉;③浓硝酸;④浓盐酸 心脏起搏器的电池几年更换 酒精可以直接被肠胃吸收吗 怎么样用化学法提纯3,5-二甲基苯胺,含量99.5%以上 氯仿与什么化学物质反映为了测试溶液中是否含有氯仿,在甲醇+水+氯仿的溶液中,用什么溶液能测得该溶液中含有氯仿反映现象如何呢? 【生物】为什么在胃部会吸收酒精? 分离提纯乙酸乙酯溶液中的苯甲酸、对甲基苯胺和乙酰苯胺 四氟乙烯的化学式 怎么让肠胃少吸收酒精喝 怎样按装心脏起搏器 根据四氟乙烯的化学式你能得到哪些信息 初中生物分组实验都有哪些人教版的初中生物分组实验是不是只包括所谓的“实验”?而“探究”、“调查”、“观察与思考”、“演示”都不属于严格的分组实验内容?初中生物书上感觉说 怎样用化学区分苯胺,N-甲基苯胺,N,N-二甲基苯胺? 四氟乙烯的化学式可以得到哪些信息? 氧化亚铁、四氧化三铁、氧化铁、氢氧化亚铁、氢氧化铁的化学性质 氯仿化学式 脂肪鉴定为什么要在盖盖玻片前滴加蒸馏水 氢氧化亚铁如何转化成氢氧化铁? 选择题:氯仿的化学式和化学名是()? 三氯甲烷怎样处理后才能替代四氯甲烷 氢氧化铁 及氢氧化亚铁 性质急用 谢谢 测定氯仿被氧化的溶液是什么?是 四氟乙烯(C2F4)中碳元素的浓度为?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘