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

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 元 素 来 扩 充 文 件 查 询 功 能( 按 文 件 属 性、 创 建 日 期、 最 后 修 改 日 期、 最 后 访 问 日 期 等 不 同 条 件 的 查 询)。
处理加了密码的MDB文件-VB资料 VB创建临时文件 从公共对话框控件中提取多个文件名称 -VB资料 从全路径名中提取文件名 -VB资料 打印MsChart之类的控件 -VB资料 谈谈在VB6.0中如何使用资源文件进行编程 动画图像分解在VB动画设计中的应用 多重文档界面设计方法-VB资料 恢复回收站中的文件 -VB资料 VB获得位图文件的信息 VB获得文本框中光标所在行的内容 VB获取程序工作路径的方法 VB获取文件或文件夹属性 基于VB的通用折行打印程序 基于VB和EXCEL的报表设计及打印 VB建立多级目录 -VB资料 VB建立快捷方式-VB资料 VB建立文件关联 -VB资料 将RichTextBox 之中被选取的内容复制到剪贴簿-VB资料 将我的程序的文本直接送到WORD中(不用粘贴)-VB资料 开启文件属性窗口 -VB资料 快速读取 TextBox 第 N 行的资料 -VB资料 快速选择里List全部项目-VB资料 VB利用 App.Path 读取「应用程序所在之目录」 VB利用 EM_LINESCROLL 信息控制 TextBox 的卷动。 命名的技巧 -VB资料 目录所占的字节数-VB资料 VB判断文件是否在IE的缓存中 屏蔽文本框的右键菜单-VB资料 VB取得长文件名 VB取得临时文件名 使用cuteftp时出的错! 怎么能添加一个链接 寻求使用rtp/rtcp的实时视频传输例子!! 输入法与文字处理程序间的关系是怎样? 如何使数据窗口的全部数据默认选定!? 请问,Delphi中有类似VC的静态变量吗? 想要一个用jsp做的新闻发布系统 请问ORACLE的凭证检索失败是怎么回事?--谢谢 char *mdd=5 内存中进行了什么动作?可否解释一下 我想问多下,那wininet.dll 文件是不是nt的系统都有噶? 搞得我头都大了的"多媒体"问题??????????? 重新调用一个方法。 Query的问题? active report作出的报表地下怎么会有这个公司的广告呀? 求救:关于树在建立游戏模型上的应用,及说明 Win2000下屏蔽Win键 怎么把字符串拷到另一个字符串数组里 Delphi_Li(Delphi Li) ,lincanwen(海) ,Focus(老鱼) 刚才关于opengl的帖子手一发抖就给结了,对不住,麻烦来领分,谢谢各位 请教大家关于 认证考试 的问题 更改窗口标题条文字 jsp连接domino数据库? 帮我分析一下!!!!!!!!!!!!! 关于oracle的问题,很急 capDriverConnect函数和capDriveDisconnect函数疑问 crystal report 的问题 Delphi调用win32函数的帮助borland公司提供了吗? 请介绍几本考网络设计师的参考书! 怎样设置另一个对话框IDC_EDIT的值 在线等待:在Java中是否有权限修改一个文件的权限? 【 刚才很生气,深圳农民意识的人太多了,做出的事情好可笑,我很生气 】 急需Java程序员 有谁用过链接服务器? 关于用java连接domino数据库? 如何判断一个已打开的socket的状态? 坏习惯不知道该不该改,给个建议。来者有分! vc sdk下作'帮助'功能,怎么写代码.需要什么资源? 看看这个错误。有关ADO 连接sybase 数据库的问题。 各位大哥,救救小第吧。分数随你开口(我有1357分)。拜托拜托!!!! C++ primer中文版中的几个错误! 如何将MSHFlexGrid1控件中的数据写到EXCEL文件中,最好能给出详细说明!在线等待 有天津的朋友吗?我请教个问题,谢谢。 数据库连接的问题 怎样在代码中改变CComboBox中下拉框的高度? *** Application 中文件的读与写 *** 关于jsp里的浮点数位数的问题(急!!!) c++ primer中的几个翻译错误! 高分求解,不够再加,我有900分,在线等?关于重载DataGridColumnStyle 如何做bbs系统? 如何查找文本文件里面有某个特定字符串?并删掉它? 如何在php 里一个动作update 2个MYSQL表 谁知道在VC里除数为零的异常怎么捕获吗? 电流对人体的伤害分为哪几种 为什么美国西南部有一块温带热带沙漠气候? 跟吃有关的成语俗语谚语越多越好. 电压表所接电阻断路短路时示数变化 男女之间的 有关雨的成语俗语谚语 电流对人体的作用有什么伤害 安第斯山脉海拔1500米以下的山麓为( )带,分布着大面积的( ),海拔1500-3000米之间的山区为( )带海拔3000-4500米之间的山区为()带,分布着大片的( )和( ) 观察星空最好的时间应该是什么时候? 断路、短路各自对电流表、电压表、定值电阻、滑动变阻器的影响例如:断路时,电流表无示数=0,电压表示数较大接近电源电压.如果将数十个小彩灯串联后接在电压U的电源两端,均正常发光, 天平的平衡螺母安装在什么位置?如果横梁的左臂偏高,应该向哪个方向旋转平衡螺母?快啦~~~~~ 观察星空最好的时间是A.晴朗的农历十五、十六夜里 B.晴朗的农历每月的上旬夜里C.晴朗的农历每月下旬夜里 D.日出前后和黄昏 关于电流大小对人体伤害(1A=1000mA)物理沪科教科书上写当流经人体的电流为1mA时人体会产生麻的感觉,10mA~100mA(0.1A)时就会发生致命的危险.但是我们在实验室做关于测电流、电压、电阻的实 电流对人体造成伤害主要取决哪些因素 观察星空的最好的时间A晴朗的农历十五十六夜里B晴朗的农历每月上旬夜里C冬天大气逆辐射最强的夜里D日出前后和黄昏 电流通过人体有什么危害吗?用手摸电源插座有时有电的感觉,但是不是很严重,可能是火线,请问只触摸一条火线对人体有害吗?只摸一条火线没事吧?感觉像针刺一样,有点麻,但是能忍受.用手按 电流对人体的伤害有哪些? 星空:观测软件我以前在手机杂志上看过一款星空观测软件,能用摄像头对准空时能自动绘出当前的星空图,名字我忘了好像叫star什么的,安卓的, 如图所示,斜劈形物体的质量M,放在水平地面上,质量为m的粗糙物块以某一初速沿斜劈的斜面向上滑,d选项为什么不对如图所示,斜劈形物体的质量M,放在水平地面上,质量为m的粗糙物块以某 一个养鸡场有680只鸡,其中母鸡比公鸡的2倍还多1只,小鸡比母鸡的3倍还够1只,这个养鸡场有公鸡母鸡、小鸡各有多多只? 天平上的平衡螺母在横梁不平衡时该怎么用比如说在左端高时,左右俩个平衡螺母该怎么调 如图所示,一质量为m的滑块,在粗糙水平面上的质量为M的斜劈上下滑,斜面光滑,下滑过程中,M始终静止,则下列说法正确的是( ) 若斜劈M粗糙,m减速下滑,说法正确的是( )若斜劈M粗糙,m匀速 请写出几个有关天气的成语或谚语及获知天气预报的途径 山东、山西的“山”指哪座山? 质量为M的斜劈形物体放在水平地面上质量为m的粗糙物块以某一初速度沿劈粗糙斜面向上滑速度为零后又加速度返回物块始终静止物块上下滑动过程中.A物块m上滑>下滑时间B 物块m下滑对斜劈M 三个体积,形状都相同的实心物体甲乙丙,把他们都放入水中,甲上浮,乙悬浮,丙下沉 用小于号连接他们的密 山东山西的“山”是指哪座山? 鲁迅《故乡》的读后感,100字左右,麻烦一下了,写得好加分.. 无论怎样调节平衡螺母都不能使天平平衡怎么回事?(除了托盘放反) 电流对人体 三种伤害形式是? 十篇关于鲁迅小说的读后感200~300字紧急!把老本都豁出来了悬赏分还要加只要200~300字.多了不要情势突变= = 不好意思只要5篇 南极地区干燥,素有"白色沙漠"之称,为什么还会哟2000多米的巨厚冰层?回答后有奖!好的才奖 世界上唯一有3种季风气候的国家是? 鲁迅(故乡)读后感快 南极为什么被称为“白色沙漠”?为甚麽? 星空观测哪里有在线或者下载的用电脑观测星空的软件,谢谢 太阳系中除了八颗行星外还有什么天体围绕太阳转 南极地区气候干燥,素有“白色沙漠”之称,为什么还会有2000多米的巨厚冰层? 在星空观测星座选择一个晴朗的夜晚,观测当地的星空.请写出:(1)观测地点:(2)观测时间:(3)记录观测到的星空(大熊星座、小熊星座、仙后星座、北极星必须绘制出)第3题可以不 太阳系除了九大行星还有什么天体绕太阳公转阿?如题.要4个. 南极为什么被称为白色沙漠 `观测星空`为什么观测星空时要把星空图反过来举过头顶看?急 南极地区的年降雨量只有50毫米,为何会有如此多水? 南极地区被称为白色沙漠的原因,是因为其降水稀少,还是因为它被冰雪覆盖 含3.01乘以10的23次幂个钠离子的硫酸钠中约含硫酸根离子----mol0.25怎么算的? 因为干旱所以降雨量低 还是因为降雨量低所以干旱 读鲁迅故乡有感 71g硫酸钠中含钠离子物质的量为多少摩,含硫酸根离子多少个 电流对人体产生危害的根本原因电流(电压)为什么会导致人心跳呼吸停止而死亡?根本原因是什么呢? 一个重为5N的小球,体积为0.5分米³,如果它浸没在水中,他是上浮还是悬浮还是下浮?(g=10N/kg) 鲁迅的故乡,读后感 养鸡场有母鸡x只,小鸡的只数是母鸡只数的20倍,一共有鸡( ) 闽北地区的南平市,武夷山市,邵武市,建阳市,建瓯市,光泽县,松溪县,浦城县,顺昌县等所在城区人口有多少?只要闽北地区各个市,县的城区人口的详细数据就可以. 故乡 鲁迅 读后感 养鸡场有母鸡和小鸡3325只,其中小鸡的只数是母鸡的2.8倍,母鸡和小几个有多少只 php是解释性的语言,和编译有什么区别? 有关天的成语 ,俗语,谚语等姓名:天什么 某养鸡场养母鸡800只,养的小鸡比母鸡只数多八分之五,小鸡比母鸡多多少只? 热带沙漠气候主要分布在那个热带还是温带? 关于气象物候的俗语,谚语,成语
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘