`
lxc63lxc
  • 浏览: 29223 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

系统文件递归查询

 
阅读更多

系统文件递归查询
2012年01月11日
  文件系统对象也能实现递归调用
  [b] [
摘要]:针对文件系统对象(FileSystemObject)进行特殊的函数编程,也能实现递归调用,可以在VB、ASP、VBS等语言中广泛使用,以实现文件的快速查找等。
  关键词:文件系统对象,引用,递归,调用
  The File System Object can be Achieved Recursive Call
  Wang ruixue1 ,Ma wenchao1 ,Wang duomin1
  1. Meteorological Bureau of  Alxa League, Inner Mongolia  Alxa League  750306
  [Abstract]We can proceed special function programming According to the file system object (FileSystemObject), also can realize recursively, can be widely used in such  VB、 ASP、VBS language, in order to realize the files quickly found etc.
  Key words: FileSystemObject,quoted,Recursion,calling
  递归调用就是子程序自己调用自己。在以往的VB、ASP编程中,当我们需要目录的递归调用时,往往需要内部函数Dir以及API来实现。本文以vb及脚本为例,说明文件系统对象(FSO)也能递归调用。 FSO对象模型包含在一个称为Scripting的类型库中,此类型库位于Scrrun.dll文件中,通过[属性]菜单的[引用]对话框选择“Microsoft Scripting Runtime”项来引用,在引用了该类型库后就可以创建使用该文件系统对象。
  以下函数利用文件系统对象(FSO)枚举指定目录下的所有子目录及文件,自定义递归函数如下:
  Public Sub Fso_Dir(Optional ByVal initialFolderPath As String = "c:\", Optional ByVal Folder As Folder = Nothing, Optional blCreateObjFlag As Boolean = True)
  'On Error Resume Next
  Dim Fso  As FileSystemObject
  Dim file As file, Subforld As Folder
  ' blCreateObjFlag是否需要创建文件系统对象的标志,初次为真,以后全部设置为假
  If blCreateObjFlag Then
  Set Fso = CreateObject("Scripting.FileSystemObject")
  If Right(initialFolderPath, 1)  "\" Then initialFolderPath = initialFolderPath & "\"
  If Dir(initialFolderPath, vbDirectory) = "" Then Exit Sub '不存在最初设定的目录退出
  Set Folder = Fso.GetFolder(initialFolderPath)
  End If
  For Each file In Folder.Files'显示某文件夹中的所有文件。
  Debug.Print "文件:" & file.Path '显示文件
  Next
  For Each SubFolder In Folder.SubFolders
  Debug.Print "文件夹:" & SubFolder.Name '显示文件夹
  Fso_Dir , SubFolder, False '同一个文件系统对象内部文件夹的递归调用
  Next
  Set Fso = Nothing '最后释放该文件系统对象
  End Sub
  函数的所有参数都是可选参数。第一个参数的缺省路径是:c:\,它是要递归的初始路径,即从什么路径开始递归。当然调用时可以根据实际需要来改变,如:call FsoDoDir("D:\mapx\"),就是将默认值”c:\”改成了”D:\mapx\”。
  第二个参数Folder初始设置为Nothing,,即在调用Fso_Dir(…)该过程前,Folder不再引用任何实际对象,缺省为Nothing。
  第三个参数blCreateObjFlag设置为TRUE,,即最初调用中仅一次性创建一个文件系统对象,其后的整个递归过程中全部将其设置为假,也就是限定在一个文件系统对象内部进行递归调用。 blCreateObjFlag是一个标志性参数,表示是否需要创建文件系统对象, blCreateObjFlag也是能否实现递归调用的关键性参数。
  调用该函数方法如下:
  call FsoDoDir("d:\vb\")或Fso_Dir "D:\mx5\"
  也可以什么参数都不用,因为自定义函数都是可选参数,递归的起点路径默认为c:\,如:
  Call FsoDoDir
  最后值得一提的是,在vbs脚本语言中,不必引用文件系统对象,只要创建文件系统对象如:set fso=CreateObject("Scripting.FileSystemObject"),就可以直接使用它,非常方便。
  Vb脚本文件系统的递归法方法如下:
  Option Explicit
  Dim FSO
  Set FSO = CreateObject("Scripting.FileSystemObject")
  DoDir FSO.GetFolder("c:\ ")
  pause
  Sub DoDir(Folder)
  'On Error Resume Next
  Dim File,SubFolder
  For Each File In Folder.Files
  WScript.StdOut.WriteLine File.Path
  Next
  For Each SubFolder in Folder.SubFolders
  DoDir SubFolder'同一个文件系统对象内部文件夹的递归调用
  Next
  Set FSO=Nothing    
  End Sub
  使用 Cscript.exe,可以通过在命令提示符下键入脚本文件的名称来运行脚本。若将以上脚本内容复制到后缀名为.vbs的文件中。在批处理中,写入如:CScript wrxRecursion.vbs可以运行vb脚本;在批处理中写入pause可以暂停命令窗口来查看输出结果。
  参考文献
  1陈明.Visual Basic程序设计.北京:中央广播电视大学出版社,2003.364-367.
  2 国瑞军. Visual Basic数据库开发精粹(第二版).北京:电子工业出版社,2007.1-15.
  3 赵松涛.Visual Basic+SQL Server 2000 系统开发实录.北京.电子工业出版社,2007.134-177.
  4 微软公司.Microsoft Windows 脚本技术(电子版).美国,2001.
  [/b]
分享到:
评论

相关推荐

    sql server 2008 递归查询所有上级或下级数据

    在SQL Server 2008中实现递归查询来获取所有上级或下级数据是一项非常实用的技术,尤其是在处理具有层次结构的数据时。本篇将详细解释如何利用Common Table Expressions (CTE)来完成这样的查询,并对提供的示例代码...

    hibernate实现递归查询

    递归查询通常用于处理树形结构的数据,例如组织结构、菜单系统或者文件目录等。 首先,我们需要了解递归的基本概念。递归是一种算法,它通过调用自身来解决问题。在查询数据库时,递归查询意味着我们查询一个记录,...

    采用递归查询文件

    在IT领域,递归查询文件是一项基础且...总之,递归查询文件是IT工作中的一项实用技能,它结合了文件系统操作和递归算法,能够高效地处理大规模的文件搜索任务。通过灵活运用递归,我们可以轻松解决各种文件查找问题。

    c# 基于文件目录的递归查询显示 !

    以上就是使用C#进行基于文件目录的递归查询和显示的基本步骤。这种方法在需要遍历文件系统并呈现层次结构的场合非常有用,例如在文件管理器应用或搜索功能中。通过这种方式,你可以轻松地展示复杂的目录结构,让用户...

    两种mysql递归tree查询效率-mysql递归tree

    MySQL作为一种广泛使用的数据库管理系统,提供了多种方法来实现递归查询。本文旨在通过对比两种不同的MySQL递归树查询方式,分析它们的效率差异,帮助开发者选择更适合实际应用场景的方法。 #### 二、环境准备 ...

    文件递归-XML递归-树图递归

    ### 文件递归-XML递归-树图递归 #### 一、文件系统递归 在计算机科学中,文件系统递归是指通过遍历文件系统(通常是从根目录开始)来处理目录及其子目录下的所有文件的过程。这种方法常用于搜索特定类型的文件、...

    oracle递归查询的例子

    递归查询允许用户执行多级关联查询,特别适用于处理具有层次结构的数据,例如组织结构图、文件系统目录等。本文将通过一个具体的例子来详细介绍如何在 Oracle 中实现递归查询。 #### 二、基础知识回顾 在深入讨论...

    sql递归查询实例2

    这种查询通常用于模拟树形结构的数据模型,如组织架构、文件系统等。 ### 示例数据库表结构 在这个示例中,我们有一个简单的表`t`,包含两列:`id`和`upperid`。`id`列代表每个记录的唯一标识符,而`upperid`列则...

    在db2和oracle中的对树的递归查询语句

    本文将深入探讨这两个数据库系统中如何使用递归查询语句来操作树形结构。 首先,让我们理解什么是树形结构。在数据存储中,树形结构是一种层次化的数据模型,它由节点(或称为记录)组成,每个节点可以有零个或多...

    python实现MP4文件递归查找功能

    在这个场景中,我们关注的是如何使用Python来实现一个递归查找功能,特别是针对.mp4视频文件。递归查找允许程序在给定目录及其所有子目录中搜索特定类型的文件。这种功能在处理大量文件时非常有用,例如在多媒体管理...

    文件,遍历文件,文件递归,文件查找

    在给定的标题和描述中,我们聚焦于“文件”,“遍历文件”,“文件递归”以及“文件查找”这四个关键概念。接下来,我们将深入探讨这些知识点。 1. 文件: 文件是计算机存储信息的基本单位,可以包含文本、图像、...

    文件夹递归查询所有文件夹内容替换目标文本

    "文件夹递归查询所有文件夹内容替换目标文本"是一个解决此类问题的实用方法,它通过一个批处理(bat)文件执行Java(JAVA)编写的jar包来实现。这种方法的优点在于,它不需要依赖IDE(如IntelliJ IDEA或Eclipse)...

    tcp文件服务器(支持递归查询目录,上传下载文件)

    在本文中,我们将深入探讨TCP文件服务器的工作原理、递归查询目录的实现方式以及如何进行文件的上传与下载。 首先,TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。...

    递归删除文件或子目录

    在计算机编程中,递归是一种强大的技术,常用于解决涉及层级结构的问题,如遍历文件系统、树形数据结构或执行深度优先搜索等。在这个场景中,"递归删除文件或子目录"指的是编写一个程序,它能够遍历并删除指定目录下...

    oracle递归、迭代

    例如,在组织结构、产品分类或文件系统等场景中,经常需要查询这种类型的层级数据。Oracle数据库提供了强大的递归查询功能来解决这类问题。本文将详细介绍如何在Oracle中使用递归查询,并通过具体的示例来展示其用法...

    易语言递归枚举所有文件

    在易语言中,"递归枚举所有文件"是一个常见的操作,尤其在处理文件系统任务时,例如查找、备份或者分析文件结构。这个任务涉及到几个关键的概念和技术,我们将一一进行详解。 首先,我们要理解什么是"递归"。递归是...

    VC对磁盘文件遍历搜索的递归算法和非递归算法

    在文件遍历中,递归算法通常从根目录开始,检查每个目录中的文件,如果文件不是目标,则继续进入子目录进行相同的操作,直到找到目标文件或遍历完整个文件系统。递归算法简洁明了,易于理解,但可能导致大量的函数...

    Teradata 递归的实现

    在提供的"递归.sql"文件中,可能包含了实现Teradata递归查询的实际示例。这样的脚本可能涉及到创建一个包含层级关系的表,定义递归查询来遍历这个层级,以及可能的测试用例来验证递归查询的正确性。 递归查询的优点...

    10.2.0.3版本 with改造递归查询

    递归查询通常用于处理层次结构数据,如组织结构、文件系统等。 ##### 2. WITH子句 WITH子句是Oracle SQL中的一个特性,它允许用户定义一个临时的命名视图,并在之后的查询中引用该视图。WITH子句可以极大地简化...

    自己写的php 递归无限分类 附有sql文件

    这样的设计使得我们可以轻松地通过递归查询构建无限分类树。 在实际应用中,这个系统可能还会包括其他功能,比如添加、删除和编辑类别,或者根据需要动态生成菜单。`jquery-1.6.1.min.js`是一个JavaScript库,可能...

Global site tag (gtag.js) - Google Analytics