- 浏览: 19907 次
最新评论
系统文件递归查询
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]
发表评论
-
S3C2410内存管理单元MMU基础实验
2012-01-20 08:14 1079S3C2410内存管理单元MMU基 ... -
转:linux设备模型之pci设备的I/O和内存
2012-01-20 08:14 856转:linux设备模型之pci设备的I/O和内存 2011年 ... -
嵌入式Linux内核移植相关代码分析
2012-01-20 08:14 683嵌入式Linux内核移植相 ... -
linux NAND驱动之一:内核中的NAND代码布局
2012-01-20 08:14 1438linux NAND驱动之一:内核 ... -
Linux进程间通信源码剖析,共享内存
2012-01-20 08:14 859Linux进程间通信源码剖 ... -
妙用script自动清除ie地址栏记录
2012-01-19 13:30 694妙用script自动清除ie地址栏记录 2012年01月13 ... -
bat在win7中获取当前路径
2012-01-19 13:30 1196bat在win7中获取当前路径 ... -
深入浅出Win2000 (xp)计算机启动/关机脚本
2012-01-19 13:30 962深入浅出Win2000 (xp)计算 ... -
脚本病毒
2012-01-19 13:30 786脚本病毒 2011年04月30日 脚本病毒通常是Java ... -
WinCE驱动开发问题精华集锦(一)
2012-01-17 03:20 500WinCE驱动开发问题精华 ... -
速度-电脑运行速度慢的各种原因及解决方法zz
2012-01-17 03:20 533速度-电脑运行速度慢的 ... -
系统常见死机原因解析及解决方法
2012-01-17 03:20 545系统常见死机原因解析 ... -
针对WM6.5系统和软件的注册表修改以及优化
2012-01-17 03:19 1178针对WM6.5系统和软件的注册表修改以及优化 2011年04 ... -
深入Java核心Java内存分配原理精讲
2012-01-17 03:19 779深入Java核心Java内存分配原理精讲 2011年03月0 ... -
古代的吴越男人是找不到汉人老婆,甚至很难找到吴越老婆的
2012-01-16 01:53 1572古代的吴越男人是找不 ... -
我的贵州 (一)
2012-01-16 01:53 624我的贵州 (一) 2011年06月08日 贵州不 ... -
我非英雄,广目无双,我本坏蛋,无限嚣张
2012-01-16 01:53 1111我非英雄,广目无双,我 ... -
宋小鱼孙二狗之“长相”
2012-01-16 01:53 536宋小鱼孙二狗之“长相 ... -
东北民众的地方语言
2012-01-16 01:53 516东北民众的地方语言 20 ... -
json访问
2012-01-11 01:52 476json访问 2011年08月01日 [{" ...
相关推荐
使用递归方法循环读取省市区的json文件数据,并保存到数据库中,经测试可以直接使用,代码里包含省市区的json文件,递归读取方法,可用作系统省市区数据初始化作用
由于项目需求,写了个递归拷贝目录下全部文件的demo,并且显示进度,如果子目录不存在则创建。欢迎下载!
基本程序设计技术,递归程序设计,程序结构,文件,结构体,类型定义 实验内容 1.分别调试课件中的给定n求Fibonacci(n)递归与非递归函数,并编写测试函数对两种或多种不同方法所需时间进行比较,且当某一轮计算...
今天要用md5sum操作目录,递归生成目录下所有文件的md5值,结果发现它不支持递归操作于是写了个php脚本处理下 代码: <?php $path ='/data/www/bbs/source'; $outfile = 'file.md5'; get_file_md5($path, ...
C通过运行时堆栈支持递归函数的实现。递归函数就是直接或间接调用自身的函数。 许多教科书都把计算机阶乘和菲波那契数列用来说明递归,非常不幸我们可爱的著名的老潭老师的《C语言程序设计》一书中就是从阶乘的计算...
使用递归算法在指定目录下查找文件(2KB)
J2ME文件系统的运用,分三部分讲解,含有代码及文件系统的原理,适合初学者使用。
rimraf - 递归地删除文件类似于rm -rf
go-fsevents 在golang中使用inotify递归文件系统事件监视器
【IT十八掌徐培成】Hadoop第04天-01.文件删除-递归访问文件系统-eclipse插件.zip
php如何实现递归遍历文件目录?
File类操作递归删除 大型文件秒删 无法找回 千万不要删系统盘
利用遞歸刪除文件夾下的文件及其內所有子文件夾內的文件(不刪除文件夾) 源码为日文操作系统下写的,注释 可能会乱码!
1.领域:matlab,深度递归神经网络,推荐系统 2.内容:基于深度递归神经网络的连续优化元启发式算法推荐系统matlab仿真+代码仿真操作视频 3.用处:用于深度递归神经网络的连续优化元启发式算法推荐系统编程学习 4...
c#下文件系统的TreeView显示,有递归显示和按层打开两种方式
在linux系统中我们可以使用ls Z*_2014*来查找相应的匹配文件,本程序使用c语言通过递归调用,实现了这个功能。
用java写的windows下的文件搜索程序,底层索引存储采用bst(二叉排序树),构造索引时采用深度递归算法(偏慢),只支持对文件的索引,不支持对文件夹的索引,采用jnotify监听文件的新建,修改,删除和重命名,同时自动...
特别对嵌套的子列表采用了递归树解析的方法, 此外本课设不仅完成了PDF上的基本需求, 还进行了全面的拓展, 比如参考Markdown标准语法对语法进行扩充(包含5项), 在GUI版本可载入文件、自由编辑(修改多行内容), 而且可...
recursive-watch:最小递归文件监视器