遍历目录及子目录

遍历目录及子目录


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);
  private
    { Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation
uses Masks;
{$R *.dfm}

//遍历目录及子目录
procedure GetFileListEx(FilePath, ExtMask: string; FileList: TStrings; SubDirectory: Boolean = True);
  function Match(FileName: string; MaskList: TStrings): boolean;

var

i: Integer;

begin

Result := False;

for i := 0 to MaskList.Count - 1 do
    begin

if MatchesMask(FileName, MaskList[i]) then

begin

Result := True;

break;

end;

end;
  end;
var
  FileRec: TSearchrec;
  MaskList: TStringList;
begin
  if DirectoryExists(FilePath) then
  begin
    if FilePath[Length(FilePath)] <> ‘\‘ then FilePath := FilePath + ‘\‘;

if FindFirst(FilePath + ‘*.*‘, faAnyfile, FileRec) = 0 then
    begin

MaskList := TStringList.Create;

try

ExtractStrings([‘;‘], [], PChar(ExtMask), MaskList);

FileList.BeginUpdate;

repeat

if ((FileRec.Attr and faDirectory) <> 0) and SubDirectory then

begin

if (FileRec.Name <> ‘.‘) and (FileRec.Name <> ‘..‘) then

GetFileListEx(FilePath + FileRec.Name + ‘\‘, ExtMask, FileList);

end

else

begin

if Match(FilePath + FileRec.Name, MaskList) then

FileList.Add({FilePath +} FileRec.Name);

end;

until FindNext(FileRec) <> 0;

FileList.EndUpdate;

finally

MaskList.Free;
      end;

end;
    FindClose(FileRec);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 Memo1.Lines.Clear;

GetFileListEx(‘Z:\‘, ‘*.*‘, Memo1.Lines, False);

Caption:=IntToStr(Memo1.Lines.count);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin

Memo1.Lines.Clear;

GetFileListEx(‘Z:\‘, ‘*.cs‘,  Memo1.Lines, true);

//GetFileListEx(‘Z:\‘, ‘*.cs;*.txt‘,  Memo1.Lines, true);

Caption:=IntToStr(Memo1.Lines.count);
end;

end.

来源: <">http://www.cnpack.org/>

来自为知笔记(Wiz)

附件列表

遍历目录及子目录

时间: 2024-10-06 06:37:26

遍历目录及子目录的相关文章

Python os模块实例之遍历目录及子目录指定扩展名的文件

需求:在该目录下有很多子目录(如下图,截图了部分),现要从该目录和所有子目录下找到所有扩展名为.meta的文件,并获取文件中第二行guid的值(': '后面的),然后将所有guid的值输出到另一文件中 .meta文件截图: 思路: 遍历当前目录的子目录,如果是文件并且扩展名为.meta,获取guid,写入到guid.txt:如果是子目录,则遍历子目录下的文件. 方法一: #!usr/bin/env python # -*- coding: utf-8 -*- import os outfile

Makefile 递归遍历目录(含子目录) 编译动态库

这里推荐一本书,Makefile手册,本人正在学习,多交流~ 一.统一编译所有子目录的文件 直接上Makefile内容了, AR=arLD=ldCC=gcc CFLAGS = -O2 -Wall  -I./Test \                -I./Test/Test1 \ #注:"\"后面不能有空格,并且该句写完后最好有个换行 #注释部分推荐在单独的一行编写 #动态库需要 -fPIC  -shared SOFLAGS = -O2 -fPIC -sharedTARGET = .

C#递归方法遍历目录及子目录

众所周知,获得某一目录下第一级的所有文件和文件夹列表,很容易办到:DirectoryInfo di=new DirectoryInfo(strBaseDir);//strBaseDir是起始目录,绝对地址DirectoryInfo[] diA=di.GetDirectories();//获得了所有一级子目录FileInfo[] fiA=di.GetFiles();//获得了所有起始目录下的文件要是想获得某一目录下的所有文件和目录(包含所有子目录),那该怎么办呢?目录都是一层套一层的,我们不能预知

使用shell命令遍历目录和子目录文件并输出到文本

"input_dir"代表当前目录,"output_file"代表输出文件,你可以自己根据情况修改, 1 #!/bin/bash 2 function getdir(){ 3 for element in `ls $1` 4 do 5 dir_or_file=$1"/"$element 6 if [ -d $dir_or_file ] 7 then 8 getdir $dir_or_file 9 else 10 echo $dir_or_file

c#遍历目录及子目录下某类型的所有的文件

DirectoryInfo directory = new DirectoryInfo("D:\\aa\\"); FileInfo[] files = directory.GetFiles("*.*", SearchOption.AllDirectories); foreach (FileInfo dire in files) { //MessageBox.Show(dire.FullName); listBox1.Items.Add(dire.FullName);

利用 os.walk() 遍历目录

os.walk: walk(top, topdown=True, onerror=None, followlinks=False) 参数: top 要遍历的目录地址 topdown 为真,则优先遍历top目录,否则优先遍历top的子目录(默认为True)(广度深度) onerror 需要一个 callable 对象,当walk需要异常时,会调用 followlinks 如果为真,则会遍历目录下的快捷方式 os.walk 的返回值是一个生成器(generator), 他会不断的遍历所给目录下的所有

Java 遍历指定目录及子目录下的文件

/** * 遍历指定目录及子目录下的文件 * * @author testcs_dn * @date 2014年12月12日下午2:33:49 * @param file 要遍历的指定目录 * @param collector 符合条件的结果添加到此List<File>中 * @param pathInclude 路径中包含指定的字符串 * @param fileNameInclude 文件名(不包含扩展名)中包含指定的字符串 * @param extnEquals 文件扩展名为指定字符串 *

C/C++ 遍历目录文件,默认目录下

每次遇到这样的问题总会折腾很久,到网上搜,或者查资料,弄了很多次,但就是没记住,这次写程序又遇到了,干脆就把它都弄清楚了,然后顺便在这里记录一下,以后再遇到就不用到处去找了. 用 C/C++ 遍历目录文件主要有两种方式,分别对应在 Windows VS 环境下和 Linux\Unix 环境下的方法,它们各自所使用的函数如下: (Windows VS)_findfirst, _findnext, _findclose (Linux\Unix)opendir, readdir, closedir 下

linux列出一个目录及其子目录下面的某种类型的文件

linux列出一个目录及其子目录下面的某种类型的文件 作者:smarteng ⁄ 时间:2009年07月09日 ⁄ 分类: Linux命令 ⁄ 评论:0 怎么样把,一个目录及其所有的子目录下面的某种类型(比如*.gif)的文件全部列出来?这些子目录下面可能还包含有目录,要想全部列出*.gif的文件 find . -name "*.gif" linux find命令-exec参数的使用说明(笔记) 关键词: Linux   find -exec 前言:最近几天使用find的高级功能,但执