奇趣技术网 收藏本站
设为主页
商务合作
首页 新闻中心 行业动态 软件新闻 安全资讯 病毒预警 漏洞发布 操作系统 Dos Win9x Win2000 WinXP Win2003 WinVista Linux Unix
数据库 DB2 Access MSSQL MySQL Oracle Sybase 编程技术 ASP PHP JSP CGI/Perl XML .Net C/C++/C# VB VC Delphi Java 汇编
安全技术 安全教学 工具介绍 漏洞利用 病毒防范 入侵检测 防火墙 安全防范 汉化破解 攻击实例 加密解密 技术论坛
中华网络安全联盟 >> 程序开发 >> VB >> 利用VB函数Dir()实现递归搜索目录
程序开发
Asp
PHP
JSP
CGI/Perl
XML
.Net
C/C++/C#
Visual Basic
Visual C++
Delphi
Java
汇编语言
  • VB中使用WinSock控件传

  • VB API函数介绍——控

  • VB从零开始编外挂(完整

  • VB.Net实现Web Servic

  • 老树新芽 体验Visual 

  • vb中利用xmlhttp来下载

  • vb中使用正则表达式

  • ASP.NET中Cookie编程的

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

    中华网络安全联盟    作者:佚名    来源:网络转载    时间:2006-3-22

      我在很久以前就实现了这个方法了。它没有采用任何的控件形式,也没有调用系统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

    字体:
     
    设为主页 收藏本站 联系我们 友情连接 商务合作 网友留言
    Copyright©2006-2008 中华网络安全联盟 All rights reserved.