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

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 元 素 来 扩 充 文 件 查 询 功 能( 按 文 件 属 性、 创 建 日 期、 最 后 修 改 日 期、 最 后 访 问 日 期 等 不 同 条 件 的 查 询)。
保护你的Android付费软件-LVL全攻略(二) 保护你的Android付费软件-LVL全攻略 android调试工具monkey压力测试实战 Android开发工具-App Inventor Android游戏开发之旅18 SoundPool类 Android多线程下载远程图片 Android读写Txt文本文件代码 Android游戏开发之旅17 图像渐变特效 Android游戏开发之旅16 异步音乐播放 Android游戏开发之旅15 按键中断处理 Android游戏开发之旅14 游戏开发实战一 Android游戏开发之旅13 Sensor感应示例 Android游戏开发之旅12 Sensor重力感应 Android游戏开发之旅11 View中手势识别 Android游戏开发之旅十 位图旋转 Android游戏开发之旅九 VideoView类剖析 Android游戏开发之旅八 SurfaceView类实例 Android游戏开发之旅七 自定义SurfaceView Android游戏开发之旅六 自定义View Android游戏开发之旅五 Path和Typeface Android游戏开发之旅四 Canvas和Paint实例 Android游戏开发之旅三 View类详解 Android游戏开发之旅二 View和SurfaceView Android游戏开发之旅一 长按Button原理 Android程序内存管理必读 Android按键事件映射表和转义符对照 Android Intent大全更新到API Level8 Android中Intent对应的category列表大全 Android中内嵌字体实现个性化 TextView多行本文滚动轻松实现 获取和设置ListView的选择项 软件发布:绿幽灵高速多功能浏览器 软件发布:辟邪脸谱 软件发布:邮件群发机 软件发布:拯救地球 软件发布:九城的修行器 软件发布:龙飞定时器 软件发布:加密vfp的exe,防止反编译 软件发布:“破解注册表编辑器” 软件发布:神奇注册表 软件发布:CDWizard(光驱精灵.NET) 软件发布:神通 2001 豪华版 软件发布:VB6历史文件清理器 菜单问题!!送分哟! 请问PB7.0中,Freeform格式的数据窗口中,为何按滚动条,数据不是滚动到第一页就是最后一页?如何实现自由滚动? B/S结构用何东东编最快? 关于mpeg-4 请问各位大虾:CBitmap对象如何写入一个BMP文件? 对面的大哥看过来!高分征解有关SetWindowPos的问题。 如何刷新文件内容的缓冲? 昨天一夜星际~~~后 一个捉摸的问题,、高分请解决! 在WEBLOGIC5.1上发布EJB1.1的一个小问题 请教,如何用jbuilder 写midas的服务器, 我们公司一个程序员的头式太难看了,我每次见他就恨不得拿剃头的推子给他剃光光! 寻最好的ftp软件 autoCAD的问题 找本站里面《程序员测试软件》的注册码 刚毕业的不能报? .lib 文件到底是怎么回事?如何查看它的内容? 请问,下面的警告提示什么意思(关于sybase) 那位可以给我描述一下“代表”? 请问有WINsock编程高手么,帮我看一下下面的程序 紧急招聘PB程序员(成都) 关于产品序列号的问题……想了很久了。 这里有几个问题,能者请进! 请教VC项目开发经验 如何让下载的程序变成免费的? 请问有Pdf到Text的转化的源代码么? 能否让下载的程序变成免费的? 请问怎样才能自动复制文本框中的文本到剪贴板? 是否可用简体中文的VB开发翻体中文的应用程序? 使用JavaMail转发邮件 在servlet中是不是不可以引用其它的类中的函数.(这个类不是派生于HttpServlet) 为什么买书配送的光盘文件在BCB工程中打开后不让修改(打开前已转换为存档文件了)? 请教使用OPEN CLIENT 的一个小问题 索求算法 请问能否将下载的程序变成免费的? 现在学习C#不晚吧,:P 关于VB中控制运行实例的问题 请教关于DBGRid的问题。 请问在Java下如何实现文件压缩?有没有现成的接口或者压缩算法代码?多谢 小丽计划三天看完一本280页的书,第一天看了全书的七分之二,第二天看了第一天的五分之三,第三天小丽应从第 王大伯家购进2分之1吨煤,第一天用去总数的4分之1,第二天用去总数的5分之1,剩下的占总数的几分之几? 王师傅加工一批零件,第一天加工了44个,第二天加工总数8分之3,这时两天已加工的零件个数与未加工的零件个数比13:7,这批零件一共有多少个?算术解 小丽看一本书,三天看完.第一天看全书的18分之7,第二天看了全书的9分之4.第三天看了全书的几分之几 有7/8吨煤,第一天用去1/3,第二天用去2/5,还剩下几分之几?1-(1/3+2/5)=4/15对吗? 李师傅加工一批零件,第一天加工了全部零件的三分之一,第二天加工了15个零件,两天已加工的零件盒剩下加工的零件个数比是1:1,这批零件一共有多少个? 小丽计划三天看完一本书,第一天看了全书的7分之2,第二天看了全书的5分之3.如果她第三天实际看了16页那么第一天看了多少页? 张师傅加工一批零件第一天完成了总数的15分之7第二天比第一天多加工了18个这批零一共多少个 王师傅加工一批零件,第一天完成这批零件的25% 第二天完成了35%,还剩360个零件没加工.问这批零件共有多少个? 小丽计划三天看完一本书,第一天看了全书的7分之2,第二天看了第一天的5分之4,那么小丽前两天看了全书的几分之几?第三天小丽应看完全书的几分之几? 秦师父两天加工完一批零件,第一天完成了总数的十五分之七,第二天比第一天多加工了18个.这批零件有多少个 车间要生产一批零件,第一天完成总量的1/4,第二天350个,剩下的与已做的比是2:3,共有零件多少 有一本故事书90页,小林计划18天读完,平均每天看这本书的几分之几? 王师傅加工一批零件,第一天完成的个数是未完成个数的2分之1,如果再加工240个,就可以成这批零件的50%,这批零件有多少个 某车间生产一批零件,第一天完成总数的3/1,第二天做了400个,这时剩下的零件与做的零件的个数的比是2比3这批零件有多少个? 一本300页的故事书,小华计划30天看完,那么他6天能看这本书的几分之几 王师傅加工一批零件,第一天加工了总数的5分之1,第二天加工总数的15分之2,还剩下160个,这批零件共有多 某车间做一批机器零件,8天做了360个,还剩下3/11,照这样计算,剩下的还要几天完成? 小宁看一本书故事书,9天看了这本书的一半.照这样的速度,他6天看了这本书的几分之几?.我家小学生用我的百度号问的.我现在才知道.无语了, 王师傅加工一批零件 第一天加工了总数的3分之1,第二天加工的个数是第一天的2分之1第二天加工了总数的几分之几? 王师傅要加工360个零件,第一天加工了6分之1,根据算式补充条件(1) 360×6分之1【 】?(2)360×(6分之1+10分之3)【 】?(3)360×(10分之3-6分之1)【 小明15天看完一本故事书,平均每天看这本书的几分之几?4天呢?6天呢? 王师傅加工一批零件,第一天完成总数的1/4又7第二天完成余下的2/5多2个,还剩全部的5/18,共多少零件? 王师傅接了加工360个零件的任务,第1天完成任务的9分之1,第2天完成啦18%.第2天加工啦多少. 小强看完一本故事书要6天时间,平均每天看几分之几?3天看几分之几?5天呢? 王师傅加工一批零件 第一天完成总数的1/4又7第二天完成余下的2/5多2个,还剩19个,共多少零件? 王师傅计划加工360个零件,结果第一天完成了任务的6分之1,第二天完成的是第一天的3分之2,还有多少个零件没有完成? 一本故事书,小明第一天看了总页数的3分之一,第二天看了总页数的4分之一,还有50页没有看,第三天应从第几页看起? 一本150页发故事书,第一天读了五分之二,第二天读了余下的三分之一.第二天读了多少页? 加工一批零件,第一天完成总数的的1/4多7个、第二天完成余下的2/5多2个,还剩全部的5/18,共多少零件? 小明有一本故事书,第一天看了全书的1/6,第二天看了32页,第三天看的页数是前两天看的总页数的3/2,这时有全书的1/4没有看,这本故事书一共有多少页?写出算式 一本故事书,第一天看了总页数的3分之一,第2天看了总页数的4分只一,这本故事书共有多少页? 李师傅加工一批零件,第一天加工了总数的四分之一,第二天比第一天多加工20个,还剩下100个没有加工,这批零件共有多少个 方程解 一本书有300页,小丽第一天看了全书的1/6,第二天看了全书的2/15,第三天应从第几页看起? 一本故事书240页,小华4天看了全书的3分之2,他平均每天看多少页 某车间加工一批零件,第一天加工225个,占总数的3/10,第二天加工的是第一天的4/5还有多少个零件没加工? 小丽,计划四天看完一本书,第一天看了全书的2/9第二天看了全书的25%,第三天看了全书的1/6.第四天应看完书的几分之几?②若小丽第三天看了16页,那么第二天看了多少页? 一本168页的故事书,小华4天读了96页.照这样计算,小华读完这本书一共需要多少天?急 某工厂加工一批零件,第一天加工了总数的20%,第二天比第一天多加工了120个?问他在下面某工厂加工一批零件,第一天加工了总数的20%,第二天比第一天多加工了120个,第三天加工的零件相当于前 小丽看一本书120页,第一天看了它的六分之一,第二天看了全书的六分之五少15页,第三天应从第几页开始看 小明看一本120页的故事书,每天看十分之一,已经看了3天,还有几分之几没有看? 工厂加工一批零件,第一天加工总数的20%,第二天比第一天多加工120个,第三天加工的相当于前两天的和,这时还剩下100个没加工.这批零件一共有多少个?请列出详细算式.歇歇. 小丽看一本书,第一天看了全书的8分之1再加16页,第二天看了全书的6分之1少2页,第三天看完余下的88页.请问这本书有多少页?不要给我列方程做! 小明看一本120页的故事书,每天看十分之一,已经看了3天,还有几分之几没看?还有多少页没看? 1.某工厂加工一批零件,第一天加工了总数的20%,第二天比第一天多加工了120个,第三天加工的零件数相当于天两天加工个数的总和,这时还剩下100个没加工.这批零件一共有多少个? 一本故事书有320页,小丽的一天看了8分之3,第二天看了5分之1.第三天应从第几页开始看. 小东看一本故事书120页每天看十分之一已经看了3天还有几分之几没看 雷锋车间三天生产了一批零件,第一天生产了总数的七分之二,第二天比第一天多生产了十五个,第三天生产了六十个,这批零件共有多少个? 一本故事书有120页,小丽第一天读了全书的1/6,第二天读了余下的1/4,第三天应从第几页读起?求.大哥大姐们 小明看一本120页的故事书,每天看1/10,已经看了3天,还有几分之几没有看? 某工厂加工一批零件第一天完成了零件总数的三分之一多24件,第二天完成了零件总数的三分之1少12件,第3天完成了剩下的60件,求这批零件的总数.用设x的方程 小丽读一本故事书,第一天读了全书的1/12还多18页,第二天读了全书的1/5少5页这时还剩下73页.这本故事书共有多少页? 一本本故事书,小飞每天看100页.他每天看这本书的几分之几?四天呢? 某工厂加工一批零件第一天完成了零件总数的三分之一多24件,第二天完成了零件总数的三分之1少12第3天完成了剩下的64件,求这批零件的总数.用方程 小丽看一本故事书,第一天看了20%,第二天看了剩下的30%,还剩112页,全书共多少页 一本100页的故事书,小飞,每天看20页.他每天看这本书的几分之几?四天呢? 某工厂加工一批零件,第一天完成总零件数的1三分之一又25件,第二天完成的是剩下零件数的三分之二少12件第三天完成了剩下的64件,求总数 小丽读一本书,第一天读了全书的六分之一,第二天读了全书的四分之一,第三天她正好应从第151页读起,这本书有多少页? 一本故事书,小飞要10天看完,前4天每天看书20页,后6天每天看25页,这本书有多少页 某工厂加工一批零件第一天完成了零件总数的三分之一多24件,第二天完成了零件总数的三分之1少12件,第3天完成了剩下的60件,求这批零件的总数.用设x的方程
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn