登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

miaozk2006

点滴积累与收藏:关于技术,关于生活

 
 
 

日志

 
 

利用VB函数Dir()实现递归搜索目录  

2011-11-15 19:45:35|  分类: 编程-VB |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
 它没有采用任何的控件形式,也没有调用系统API函数FindFirst,FindNext进行递归调用,和别人有点不同的就是我用的是VB中的Dir()函数。事实上,直接采用Dir()函数是不能进行自身的递归的调用的,但我们可以采用一种办法把Dir将当前搜索目录的子目录给保存下来,然后在自身的search(strPathName)递归函数中依次进行递归的调用,这样就可以把指定的目录搜索完毕。
具体代码如下:


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'函数GetExtName
'功能:得到文件后缀名(扩展名)
'输入:文件名
'输出:文件后缀名(扩展名)

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Public Function GetExtName(strFileName As String) As String
    Dim strTmp As String
    Dim strByte As String
    Dim i As Long
    For i = Len(strFileName) To 1 Step -1
        strByte = Mid$(strFileName, i, 1)
        If strByte <> "." Then
            strTmp = strByte + strTmp
        Else
            Exit For
        End If
    Next i
    GetExtName = strTmp
End Function

Public Function search(ByVal strPath As String, Optional strSearch As String = "") As Boolean
    Dim strFileDir() As String
    Dim strFile As String
    Dim i As Long

    Dim lDirCount As Long
    On Error GoTo MyErr
    If Right$(strPath, 1) <> "\" Then strPath = strPath + "\"
    strFile = Dir(strPath, vbDirectory Or vbHidden Or vbNormal Or vbReadOnly)
    While strFile <> "" '搜索当前目录
        DoEvents
        If (GetAttr(strPath + strFile) And vbDirectory) = vbDirectory Then '如果找到的是目录
            If strFile <> "." And strFile <> ".." Then '排除掉父目录(..)和当前目录(.)
                lDirCount = lDirCount + 1 '将目录数增1
                ReDim Preserve strFileDir(lDirCount) As String
                strFileDir(lDirCount - 1) = strFile '用动态数组保存当前目录名
            End If
        Else
            If strSearch = "" Then
                Form1.List1.AddItem strPath + strFile
            ElseIf LCase$(GetExtName(strPath + strFile)) = LCase$(GetExtName(strSearch)) Then
                '满足搜索条件,则处理该文件
                Form1.List1.AddItem strPath + strFile '将文件全名保存至列表框List1中
            End If
        End If
        strFile = Dir
    Wend
    For i = 0 To lDirCount - 1
        Form1.Label3.Caption = strPath + strFileDir(i)
        Call search(strPath + strFileDir(i), strSearch) '递归搜索子目录
    Next
    ReDim strFileDir(0) '将动态数组清空
    search = True '搜索成功
    Exit Function
MyErr:
    search = False '搜索失败
End Function

摘自:网络整理

相关参考1


VB获取windows各常用目录的函数(模块)

怎样用VB获得Windows各类系统目录

VB判断文件及目录的存在性

vb目录文件操作的三种方法-1

vb目录文件操作的三种方法-2

VB 使用SendMessage枚举文件与目录


相关参考2


个通用的VB磁盘文件搜索引擎类

利用VB函数Dir()实现递归搜索目

VB 获得磁盘的文件系统

VB
部分相关推荐:


VB将自定义资源中的文件释放出来

VB在菜单上增加图标

Visual Basic 十年风云

VB表格控件总览与例程分析

利用VB函数Dir()实现递归搜索目

Visual Basic里与Print有关的函数

VB输入文本文件实现右对齐

VB查找替代字符串的函数

vb 换行气泡提示类

  评论这张
 
阅读(1114)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018