递归函数实例: 搜索当前目录下的所有嵌套目录
来源:互联网 发布:cad图纸查看软件 编辑:程序博客网 时间:2024/05/09 19:36
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//列出一个目录下所有目录(包括嵌套)的函数
procedure GetDirs(dirName: string; List: TStrings);
var
SRec: TSearchRec; {定义 TSearchRec 结构变量}
dir: string;
const
attr: Integer = faDirectory; {文件属性常量, 表示这是文件夹}
begin
dirName := ExcludeTrailingBackslash(dirName) + '/'; {不知道最后是不是 /; 先去掉, 再加上}
dir := dirName + '*.*'; {加上 /; *.* 或 * 表示所有文件, 系统会把目录也当作一个文件}
if FindFirst(dir, attr, SRec) = 0 then {开始搜索,并给 SRec 赋予信息, 返回0表示找到第一个}
begin
repeat
if (SRec.Attr = attr) and {如果是文件夹}
(SRec.Name <> '.') and {排除上层目录}
(SRec.Name <> '..') then {排除根目录}
begin
List.Add(dirName + SRec.Name); {用List记下结果}
GetDirs(dirName + SRec.Name, List); {这句就是递归调用, 如果没有这句, 只能搜索当前目录}
end;
until(FindNext(SRec)<>0); {找下一个, 返回0表示找到}
end;
FindClose(SRec); {结束搜索}
end;
{测试}
procedure TForm1.Button1Click(Sender: TObject);
var
list: TStrings;
begin
list := TStringList.Create;
GetDirs('C:/Downloads', list);
Memo1.Lines := list;
list.Free;
end;
end.
- 递归函数实例: 搜索当前目录下的所有嵌套目录
- 用嵌套递归的方法搜索指定目录下的所有文件
- 递归输出当前目录下的所有文件以及文件大小
- php递归调用打印当前目录下的所有文件
- 递归搜索给定的目录下所有的文件
- BAT批处理:递归删除当前目录下的所有空目录
- 递归删除当前目录下所有指定的目录和文件
- BAT批处理:递归删除当前目录下的所有空目录
- 递归搜索所有文件目录
- 获取当前目录下的所有文件
- 递归列出目录下的所有文件
- 递归获取目录下的所有文件
- 删除当前目录下的所有.svn目录
- 去掉当前目录及其所有子目录下的svn目录
- Java 删除当前目录及其目录下的所有文件
- matlab 获取当前目录下的所有目录
- c++搜索目录下的所有文件
- 递归输出给定目录下的所有目录和文件
- UpdatePanel 学习之 ChildrenAsTriggers
- 启动 eclipse 命令
- ORACLE存储过程中不能创建视图或表
- 偷了世界的程序员
- 实验三
- 递归函数实例: 搜索当前目录下的所有嵌套目录
- 专为iPhone开发者准备的50款经典开源应用
- pring 事务属性分析
- 同一域名对应多个IP时,获取指定IP服务器的远程网页内容
- ORACLE存储过程传入参数值无法使用
- 浅看华为IT内控
- 软件开发中的11个系统思维定律
- 沉默的大多数
- 压缩mssql日志文件的方法