【跟随万一老师的足迹】查找目录下文件,在万一老师的基础上升级下,支持多文件查找

看了万一老师的“遍历某个文件的文件及子文件“,经过层层优化,结合实际需要,在万一老师代码的基础上,增加了多文件查找的功能

//sysGetFileList(List,'c:\','*.doc,*.exe');  List通过查找添加多文件
//sysGetFileList(List,'c:\','*.doc');   List通过查找添加单文件
procedure sysGetFileList(List: TStrings; SourFile,FileName: string);
var
  S_Path: String;
  TmpList,S_FileList: TStringList;
  FileRec,SubFileRec: TSearchRec;
  I: Integer;
  IsFound: Boolean;
begin
  S_Path := IncludeTrailingPathDelimiter(Trim(SourFile));     //单元SysUtils中判断末尾是否包含文件夹路径符号'\',没有的则补全
  if not DirectoryExists(S_Path) then
  begin
    List.Clear;
    Exit;
  end;

  S_FileList := TStringList.Create;
  try
    S_FileList.CommaText := FileName;

    TmpList := TStringList.Create;
    for I := 0 to S_FileList.Count - 1 do
    begin
      if FindFirst(S_Path + S_FileList[I],faAnyFile,FileRec) = 0 then
      repeat
        if ((FileRec.Attr and faDirectory) <> 0) then
        begin
          if ((FileRec.Name <> '.') and (FileRec.Name <> '..')) then
            sysGetFileList(TmpList,IncludeTrailingPathDelimiter(S_Path + FileRec.Name),FileName);
        end
        else
        begin
          if ((FileRec.Attr and faDirectory) = 0) then
            TmpList.Add(S_Path + FileRec.Name);
        end;
      until FindNext(FileRec) <> 0;
    end;
    FindClose(FileRec.FindHandle);

    if TmpList.CommaText <> '' then     //空文件夹不添加路径
    begin
      if List.CommaText <> '' then
        List.CommaText := List.CommaText + List.Delimiter + TmpList.CommaText
      else
        List.CommaText := TmpList.CommaText;
    end;
  finally
    FreeAndNil(TmpList);
    FreeAndNil(S_FileList);
  end;
end;
时间: 2024-12-28 20:23:33

【跟随万一老师的足迹】查找目录下文件,在万一老师的基础上升级下,支持多文件查找的相关文章

剑指 offer-从上往下打印二叉树

题目:从上往下打印二叉树 题目描述:从上往下打印出二叉树的每个节点,同层节点从左至右打印 思路:考察二叉树的 层序遍历,通常借助使用一个队列或一个栈来完成 若是要求每层数据从左到右保存则用队列,若是要求每层数据从右到左保存则用栈(这种要求一般出现在“之”字型遍历 二叉树的题上) 题目本身好像要求只能用ArrayList,我这里直接用队列解了 1 import java.util.ArrayList; 2 import java.util.LinkedList; 3 import java.uti

查找目录下的所有文件中是否含有某个字符串 linux

查找目录下的所有文件中是否含有某个字符串 find .|xargs grep -ri "IBM" 查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名 find .|xargs grep -ri "IBM" -l 1.正则表达式    (1)正则表达式一般用来描述文本模式的特殊用法,由普通字符(例如字符a-z)以及特殊字符(称为元字符,如/.*.?等)组成.   (2)基本元字符集及其含义       ^ :只匹配行首.   如^a 匹配以a开头的行abc,

linux查找目录下的所有文件中是否含有某个字符串

查找目录下的所有文件中是否含有某个字符串 find .|xargs grep -ri "IBM" find .|xargs grep -ri "IBM" -l \ :只用来屏蔽一个元字符的特殊含义. 如\*,\',\",\|,\+,\^,\. 等       .:(点)只匹配任意单字符.       pattern\{n\}:只用来匹配前面pattern出现的次数.n为次数.如a\{2\}匹配aa.       pattern\{n,\}:含义同上,但次数

linux查找目录下的所有文件中是否含有某个字符串 &lt;zhuan&gt;

查找目录下的所有文件中是否含有某个字符串 find .|xargs grep -ri "IBM" 查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名 find .|xargs grep -ri "IBM" -l 1.正则表达式 (1)正则表达式一般用来描述文本模式的特殊用法,由普通字符(例如字符a-z)以及特殊字符(称为元字符,如/.*.?等)组成. (2)基本元字符集及其含义 ^ :只匹配行首. 如^a 匹配以a开头的行abc,a2e,a12,aaa,.

查找目录下的所有文件中是否含有某个字符串

find .|xargs grep -ri "IBM" find .|xargs grep -ri "IBM" -l \ :只用来屏蔽一个元字符的特殊含义. 如\*,\',\",\|,\+,\^,\. 等       .:(点)只匹配任意单字符.       pattern\{n\}:只用来匹配前面pattern出现的次数.n为次数.如a\{2\}匹配aa.       pattern\{n,\}:含义同上,但次数最少为n.如a\{2,\}匹配aa,aaa

查找目录下匹配.py或者.txt的文件

#!/usr/bin/python def endWith(s,*endstring_1):       #*代表允许传输多个参数,名称统一为endstring为元祖,**为字典 array = map(s.endswith,endstring_1)  #map(调用的函数名称,给这个函数传的参数) if True in array: return True else: return False if __name__ == '__main__': import os s = os.listdi

Go实现查找目录下(包括子目录)替换文件内容

[功能] 按指定的目录查找出文件,如果有子目录,子目录也将进行搜索,将其中的文件内容进行替换. [缺陷] 1. 没有过滤出文本文件 2. 当文件过大时,效率不高 [代码] package main import ( "flag" "fmt" "io/ioutil" "os" "path/filepath" "strings" ) type ReplaceHelper struct { R

find 查找目录下的文件

1. 命令功能 find命令用于查到目录下的文件,同时也可以调用其它命令执行相应操作. 2. 语法格式 find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression] find  [-H] [-L] [-P] [-Olevel]  [pathname]  [expression] find  [选项]            [ 路径 ]        [操作语句] 常见用

linux查找目录之文件名指令

pwd命令以绝对路径的方式显示用户当前工作目录.命令将当前目录的全路径名称(从根目录)写入标准输出.全部目录使用/分隔.第一个/表示根目录,最后一个目录是当前目录.执行pwd命令可立刻得知您目前所在的工作目录的绝对路径名称. tree命令以树状图列出目录的内容tree(选项)-a:显示所有文件和目录: -A:使用ASNI绘图字符显示树状图而非以ASCII字符组合: -C:在文件和目录清单加上色彩,便于区分各种类型: -d:先是目录名称而非内容: -D:列出文件或目录的更改时间: -f:在每个文件