delphi中是否有类似vb中FileSystemObject 的类。我想对硬盘文件进行遍历,不知如何操做,同时想能够创建目录删除文件。

解决方案 »

  1.   

    对指定的文件夹遍历,结果放到LISTBOX:
    function ListDirs(Path: string; List: TStringList): Integer;
    var
      FindData: TWin32FindData;
      FindHandle: THandle;
      FileName: string;
      AddToList: Boolean;
    begin
      Result := 0;
      AddToList := Assigned(List);  if Path[Length(Path)] <> '\' then
        Path := Path + '\';  Path := Path + '*.*';  FindHandle := Windows.FindFirstFile(PChar(Path), FindData);
      while FindHandle <> INVALID_HANDLE_VALUE do
      begin
        FileName := StrPas(FindData.cFileName);
        if (FileName <> '.') and (FileName <> '..') and
          ((FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) <> 0) then
        begin
          Inc(Result);
          if AddToList then
            List.Add(FileName);
        end;    if not Windows.FindNextFile(FindHandle, FindData) then
          FindHandle := INVALID_HANDLE_VALUE;
      end;
      Windows.FindClose(FindHandle);
    end;使用:
    var
      s: TStringList;
    begin
      s := TStringList.Create;
      ListDirs('c:\windows\', s);
      ListBox1.Items.AddStrings(s);
      s.Free;
    end;
      

  2.   

    使用shfileoperation函数删除文件夹:uses shellapi;{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);Var
      T:TSHFileOpStruct;
      P:String;
    begin
      P:='d:\address';
      With T do
      Begin
        Wnd:=0;
        wFunc:=FO_DELETE;
        pFrom:=Pchar(P);
        pTo:=nil;
        fFlags:=FOF_ALLOWUNDO+FOF_NOCONFIRMATION+FOF_NOERRORUI;//标志表明允许恢复,无须确认并不显示出错信息    hNameMappings:=nil;
        lpszProgressTitle:='正在删除文件夹';
        fAnyOperationsAborted:=False;
      End;
      SHFileOperation(T);
    end; 
      

  3.   

    呵呵,有些代码是从我的项目里COPY出来的,有些就是以前CSDN里有的:)