Delphi删除指定文件夹及文件夹下所有子目录与文件
2018-03-13 09:17
1016 查看
懒了,自己记录以备后用,直接贴整个单元代码了。使用时调用 DeleteDir函数传入需要删除的文件夹路径就行了。
unit ZipUtil; interface uses SysUtils, Classes, VCLZip, VCLUnZip, Dialogs, ActiveX; //删除目录和目录下得所有文件和文件夹 procedure DeleteDir(sDirectory: WideString); //获取子目录所有文件夹 function GetAllSubDir(Directory: WideString; var RetList: TStringList): Boolean; //获取子目录所有文件 function GetAllDirFile(Directory: WideString; var RetList: TStringList): Boolean; implementation procedure DeleteDir(sDirectory: WideString); var sr: TSearchRec; sPath, sFile: WideString; 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; function GetAllSubDir(Directory: WideString; var RetList: TStringList): Boolean; var SearchRec: TSearchRec; sTemp: WideString; function IsSubDir(SearchRec: TSearchRec): Boolean; begin if (SearchRec.Attr = faDirectory) and (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then Result := True else Result := False; end; begin if FindFirst(Directory + '*.*', faAnyFile, SearchRec) = 0 then begin repeat //循环直到Until为真 if IsSubDir(SearchRec) then begin sTemp := Directory + SearchRec.Name + '\'; RetList.Add(sTemp); //GetAllSubDir(sTemp, RetList); //这是递归部分,查找各子目录。 end; until (FindNext(SearchRec) <> 0); FindClose(SearchRec); end; FindClose(SearchRec); Result := True; end; function GetAllDirFile(Directory: WideString; var RetList: TStringList): Boolean; var i: Integer; DirList: TStringList; SearchRec: TSearchRec; begin Result := False; DirList := TStringList.Create; DirList.Add(Directory + '\'); //获取所有子目录 //if not GetAllSubDir(Directory + '\', DirList) then exit; for i := 0 to DirList.Count - 1 do begin if FindFirst(DirList.Strings[i] + '*.*', faAnyFile, SearchRec) = 0 then begin repeat if SearchRec.Attr <> faDirectory then RetList.Add(DirList.Strings[i] + SearchRec.Name); until (FindNext(SearchRec) <> 0); end; FindClose(SearchRec); end; if DirList.Count <= 0 then RetList.Add(Directory); DirList.Free; Result := True; end; end.
相关文章推荐
- Python_删除/创建指定目录及其下所有子目录的文件,该文件记录当前文件夹的内容
- Python_删除/创建指定目录及其下所有子目录的文件,该文件记录当前文件夹的内容
- delphi 删除指定文件夹下所有文件
- Inno如何在安装完成时删除指定的文件夹(下的所有文件及子目录)??
- 转:delphi 删除指定文件夹下所有文件
- pb删除指定文件夹下所有文件
- C#/.NET中删除指定文件夹下所有文件和文件夹的几种方法汇总
- 用命令行删除指定文件夹下面的所有文件(如果里面没有子文件夹)
- 用批处理从所有子目录中删除指定类型的文件
- MFC遍历指定目录下的所有文件/文件夹(不遍历子目录)
- java删除指定路径下所有的文件, 及该文件夹里的所有文件夹,不包括该文件夹
- asp.net 获取指定文件夹下所有子目录及文件(树形)
- [No000073]C#直接删除指定目录下的所有文件及文件夹(保留目录)
- C#直接删除指定目录下的所有文件及文件夹(保留目录)
- 获取指定文件夹下所有子目录及文件(树形)
- 获取指定文件夹下所有子目录及文件(树形)
- 删除指定文件夹下所有.php文件,如果子文件夹是空文件夹,也删除。
- 删除指定目录下大小为0的所有文件(包含子目录)
- winform 删除,清空指定文件夹上的所有文件或文件夹
- C#两种方式获取指定文件夹下所有子目录及文件