我有有个临时文件夹,里面有文件和目录,怎样删除他们啊

解决方案 »

  1.   

    递归整个文件夹,找到文件就用DeleteFile删除就可以了,删除目录有专门的函数,你查一下帮助
      

  2.   

    ChDir
    FindFirst
    FindNext
    DeleteFile
    RemoveDir
      

  3.   

    var
    s:tfileopstruct;
    begin
    s.wnd:=0;
    s.pfrom:=pchar('c:\temp'+#0);
    s.wfunc:=fo_delete;
    s.fflags:=fof_noconfirmation + fof_silent;
    shfileoperation(s);
      

  4.   


    DeleteFile
    RemoveDir
      

  5.   

    uses
      ShellAPE;procedure TForm1.FormCreate(Sender: TObject);
    var
      SHFileOpStruct : TSHFileOpStruct;
    begin
      with SHFile do
      begin
        Wnd := AHanle;                 //赋予Windows句柄
        wFunc := FO_COPY;             //指定拷贝一个文件拷贝
        pFrom := fromDir;
        pTo := toDir;
        fFlags := FOF_NOCONFIRMATION or FOR_RENAMEONCOLLISION;
        fAnyOperationsAborted := False;
        ltNameMappings := nil;
        lpszProgressTitle := nil;
      end;
      ShFileOperation(ShFileOpStruct);
    end;
    //下面的代码是删除目录
    var
      SHFileOpStruct : TSHFileOpStruct;
    begin
      with SHFileOpStruct do
      begin
        Wnd := AHandle;
        wFunc := FO_DELETE;
        pFrom := DirName;
        pTo := nil;
        fFlags := FOF_ALLOWNDO;
      end;
      SHFileOperation(SHFIileOpStruct);
    end;
      

  6.   

    function DelDirFile(DirRoot: string):boolean;
    var
      SR: TSearchRec;
      DosError: integer;
      Root: string;
      strFilename:string;
    begin
      Root:=DirRoot+'\';
      {使用FindFirst/FindNext返回下级目录}
      DosError:=FindFirst(Root+'*.*', faDirectory, SR);  while DosError=0 do begin
        {不包含下级目录,如果包含下级子目录要用递归来处理}
        strFilename:=sr.Name;
        FileSetAttr(strFileName,0);
        if sr.Attr=faDirectory then begin
            if pos('.',SR.Name)<>1 then begin
                GetSubDirList(root+sr.Name);
                removeDir(root+sr.Name);
            end;
        end
        else begin
            deleteFile(pchar(root+sr.name));
        end;
        DosError:=FindNext(SR);
      end;
      result:=true;
    end;这是我写的删除文件和目录的函数,为什么不能删除目录啊。
      

  7.   

    >>DosError:=FindFirst(Root+'*.*', faDirectory, SR);->
      DosError:=FindFirst(Root+'*.*', faAnyfile, SR);
    >>          GetSubDirList(root+sr.Name);
                removeDir(root+sr.Name);->
                DelDirFile(root+sr.name);
      

  8.   

    用递归太麻烦了,还是SHFileOperation好,又可以删除到回收站
    function TForm1.DelToRecycled(FileName: string): Boolean;
    var f:tshfileopstruct;
    begin
      fillchar(f,sizeof(f),#0);
      f.Wnd:=application.Handle;
      f.wFunc:=FO_DELETE;
      f.pFrom:=PChar(filename);
      f.pTo:=nil;
      f.fAnyOperationsAborted:= False;
      f.hNameMappings:= Nil;
      f.lpszProgressTitle:= Nil;
      f.fFlags:={FOF_SILENT or }FOF_ALLOWUNDO{ or FOF_NOCONFIRMATION};
      result:=(shfileoperation(f)=0);
    end;