曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 2528|回复: 0
打印 上一主题 下一主题

查找文件

[复制链接]

716

主题

734

帖子

2946

积分

超级版主

Rank: 9Rank: 9Rank: 9

积分
2946
跳转到指定楼层
楼主
发表于 2013-2-21 12:07:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
查找文件()命令用来查找磁盘上的文件,位于核心支持库的磁盘操作库中,其说明如下:
    调用格式: 〈文本型〉 寻找文件 ([文本型 欲寻找的文件或目录名称],[整数型 欲寻找文件的属性]) - 系统核心支持库->磁盘操作
    英文名称:dir
    返回一个文本,用以表示所找到的文件名或目录名,它必须与所要求的名称格式或文件属性相匹配。支持使用多字符 (*) 和单字符 (?) 通配符来指定多重文件。在某子程序中第一次调用本命令时,必须指定“欲寻找文件”参数,否则将返回空文本 (“”)。在第一次调用以后如果想得到其它匹配的文件名,再一次调用本命令,且不要提供欲寻找文件名参数。如果已没有合乎条件的文件,本命令会返回一个空文本。一旦返回值为空文本,要再次调用本命令时,就必须指定“欲寻找文件”参数。不必访问完所有当前匹配的文件名,就可以使用一个新的“欲寻找文件”进行新的寻找。本命令为初级命令。
    参数<1>的名称为“欲寻找的文件或目录名称”,类型为“文本型(text)”,可以被省略。可以使用多字符 (*) 和单字符 (?) 通配符来指定多重文件。在非首次寻找文件时,参数值必须为空或被省略。
    参数<2>的名称为“欲寻找文件的属性”,类型为“整数型(int)”,可以被省略。参数值可以为以下常量值或其和: 1、#只读文件; 2、#隐藏文件; 4、#系统文件; 16、#子目录; 32、#存档文件 。通过将这些常量值加起来可以一次设置多个文件属性。如果省略本参数,默认为搜寻除子目录外的所有文件。

下面的例子通过查找某一目录下(包括子目录)某一类型的文件(这里仅演示查找 .txt 文件)来说明该命令的用法。
首先设计的程序窗口为:

第一个为编辑框,供用户输入要查找的目录;第二个为一个标签,用来即时显示查找到的文件情况;第三个为一个选择列表框,用来存储查找到的文件名(比如一些播放器软件,往往内置这样一个选择列表框);第四个为一个按钮,当按下时,开始寻找指定的目录。

程序代码如下:

搜索文件的核心命令正是“查找文件()”命令,由于该命令没有提供直接的子目录查找功能,因此对于子目录的搜索,在程序中使用了递归算法。下面分析一下程序:

当按下“开始查找”按钮时,调用自定义的 Find() 函数,该函数只有一个参数,该参数指定一个目录,开始时从编辑框里获得。按照用户的输入习惯,他们不一定会输入目录的完整形式,比如:B:\FindMe\ ,即他们往往会遗漏掉目录字串中最后一个 "\" 符号,因此在程序的一开始我们要帮助补足这一行为。

接着,开始搜索指定目录下是否存在 *.txt 这类型的文件,如果“查找文件()”命令返回的结果不为空,那么说明找到相应的文件;找到时,我们不但用标签来即时显示这个结果,还将结果添加到选择列表框中。正如命令说明中所说的那样,“查找命令”在首次查找时需要指定第一个参数,当再次查找时就不需要再指定了,正如判断循环首里所示。

当查找完父目录里的文件后,就要处理各个子目录里的文件里。由于子目录又含有子目录,所以使用递归的方法查找是较为合适的。这里需要注意的是,有两个隐藏目录,一个是代表本层目录的 "." 和上层目录的 "..",这个要做下过滤。

查找文件命令的第二个参数指定了查找文件的属性,比如上面指定的“#子目录”。

程序运行效果如下:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-6-18 07:37 , Processed in 0.061748 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表