Delphi判断文件夹下子文件夹是否为空,及删除子文件夹,遍历文件夹及子文件夹的文件
2012-05-28 12:56
1021 查看
unit unDirOption; interface uses SysUtils, Classes; //查当前文件夹下的所有子文件 procedure SearchFile(DirName: String; var sList: TStrings); //判断文件夹是否为空 function IsEmptyDir(sDir: String): Boolean; //判断字符串是否为数字 function IsNumber(sStr: String): Boolean; //删除文件夹 procedure DeleteDir(sDirectory: String); { 执行删除文件夹操作 sFileName -> 要扫描的文件夹路径 sList -> 用至装载将扫描到的文件夹 iDay -> 区别是扫10个字符还是8个字符 (超速是8个,过往车辆是10个) iAgoDay -> 要删除多少天前的记录 } procedure ExecuteDeleteDir(Const sFileName: String; var sList: TStrings; iDay, iAgoDay: Integer); //遍历文件夹及子文件夹的文件 function MakeFileList(Path,FileExt:string):TStringList ; var MyFileName: string; implementation procedure SearchFile(DirName: String; var sList: TStrings); Var Found: integer; SearchRec: TSearchRec; begin Found := FindFirst(DirName + '*.*',faAnyFile,searchrec); while Found = 0 do begin if ((SearchRec.Attr and faDirectory)<>0) then //directory begin if(SearchRec.Name <> '.')and(SearchRec.Name <> '..') then begin SearchFile(DirName + SearchRec.Name + '\', sList); MyFileName := DirName + SearchRec.Name; sList.Insert(0, MyFileName); end; end; Found := FindNext(SearchRec); end; FindClose(SearchRec); end; procedure ExecuteDeleteDir(Const sFileName: String; var sList: TStrings; iDay, iAgoDay: Integer); var I: Integer; LastDir: String; //文件夹最后几个字符 DirDate: String;//当前文件夹的日期 begin SearchFile(sFileName, sList); for I := 0 to sList.Count - 1 do begin if iDay = 10 then LastDir := copy(sList.Strings[i],length(sList.Strings[i])-9,10) else LastDir := copy(sList.Strings[i],length(sList.Strings[i])-9,8); if IsNumber(LastDir) then begin DirDate := copy(sList.Strings[i],length(sList.Strings[i])-9,8); //此处将字符串转为日期格式 DirDate := Copy(DirDate,1,4) + '-' + Copy(DirDate,5,2) + '-' + Copy(DirDate,7,2); if StrToDate(DirDate) < Date - iAgoDay then //进行条件筛选 begin //判断文件夹是否为空 //if IsEmptyDir(sList.Strings[i]) then DeleteDir(sList.Strings[i]); end; end; end; end; function IsEmptyDir(sDir: String): Boolean; var sr: TsearchRec; begin Result := True; if Copy(sDir, Length(sDir) - 1, 1) <> '\' then sDir := sDir + '\'; if FindFirst(sDir + '*.*', faAnyFile, sr) = 0 then repeat if (sr.Name <> '.') and (sr.Name <> '..') then begin Result := False; break; end; until FindNext(sr) <> 0; FindClose(sr); end; function IsNumber(sStr: String): Boolean; var i,iLength: integer; begin iLength := Length(sStr); for i := 1 to iLength do begin if not (sStr[i] in ['0'..'9']) then begin Result := false; exit; end end; Result := true; end; procedure DeleteDir(sDirectory: String); //删除目录和目录下得所有文件和文件夹 var sr: TSearchRec; sPath,sFile: String; begin //检查目录名后面是否有 '\' if Copy(sDirectory,Length(sDirectory),1) <> '\' then sPath := sDirectory + '\' else sPath := sDirectory; //------------------------------------------------------------------ if FindFirst(sPath+'*.*',faAnyFile, sr) = 0 then begin repeat sFile:=Trim(sr.Name); if sFile='.' then Continue; if sFile='..' then Continue; sFile:=sPath+sr.Name; if (sr.Attr and faDirectory)<>0 then DeleteDir(sFile) else if (sr.Attr and faAnyFile) = sr.Attr then DeleteFile(sFile); //删除文件 until FindNext(sr) <> 0; FindClose(sr); end; RemoveDir(sPath); //------------------------------------------------------------------ end; { //调用方法 MakeFileList('c:\', '.ini'); } //遍历文件夹中的文件 function MakeFileList(Path,FileExt:string):TStringList ; var sch:TSearchrec; begin Result:=TStringlist.Create; if rightStr(trim(Path), 1) <> '\' then Path := trim(Path) + '\' else Path := trim(Path); if not DirectoryExists(Path) then begin Result.Clear; exit; end; if FindFirst(Path + '*', faAnyfile, sch) = 0 then begin repeat Application.ProcessMessages; if ((sch.Name = '.') or (sch.Name = '..')) then Continue; if DirectoryExists(Path+sch.Name) then begin Result.AddStrings(MakeFileList(Path+sch.Name,FileExt)); end else begin if (UpperCase(extractfileext(Path+sch.Name)) = UpperCase(FileExt)) or (FileExt='.*') then Result.Add(Path+sch.Name); end; until FindNext(sch) <> 0; SysUtils.FindClose(sch); end; end; end.
相关文章推荐
- 创建,删除文件或文件夹及判断其是否存在
- winform中判断文件夹以及文件是否存在,文件夹不存在进行创建,文件存在进行删除
- java判断文件夹是否存在某一文件 如果存在就删除功能
- Java遍历文件夹&判断是否存在某一类型的文件
- nodejs判断文件、文件夹是否存在及删除的方法
- Delphi遍历文件夹及子文件夹(可查找固定格式文件)
- JAVA之旅(二十八)——File概述,创建,删除,判断文件存在,创建文件夹,判断是否为文件/文件夹,获取信息,文件列表,文件过滤
- Delphi遍历文件夹及子文件夹(可查找固定格式文件)
- 判断是否下载指定客户端(遍历硬盘上的全部文件文件夹)
- C++遍历文件夹及判断某一文件或目录是否存在
- JAVA之旅(二十八)——File概述,创建,删除,判断文件存在,创建文件夹,判断是否为文件/文件夹,获取信息,文件列表,文件过滤
- java删除整个文件夹或文件(无视是否包含子文件夹)
- ASP.NET对文件的操作,创建文件,判断文件是否存在,判断文件是否存在删除文件夹
- (java)根据文件修改时间,判断是否为当天文件,如果不是则删除文件夹内文件
- Delphi遍历文件夹及子文件夹(可查找固定格式文件)
- C语言判断文件夹或者文件是否存在以及权限等信息access函数和删除文件或目录 remove()函数使用实例
- 【转】通过文件锁实现,程序开始运行时,先判断文件是否存在,若存在则表明该程序已经在运行了,如果不存在就用open函数创建该文件,程序退出时关闭文件并删除文件
- Linux shell判断文件和文件夹是否存在
- oracle的pl/sql存储过程调用java soure来判断文件夹下某个文件是否存在
- 【Android】判断assets文件夹下的某个文件是否存在