我想删除指定文件夹下所有的文件,请问代码怎么写?文件夹为C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files
我是这样写的
DeleteFile(PChar('C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files\*.*'));
但好像不管用。

解决方案 »

  1.   

    如果你删除某些或某个指定的文件(数量少的)可以按1楼的方法,但我觉的如果要删除类似你说的那些,你可以先写成bat文件,再调用,可能这样效果更好。。
      

  2.   


    //以下代码主要部分来源于《Delphi5开发人员指南》第12章
    procedure ClearDir(AHandle: THandle; const ADirName: String);
    var
      SHFileOpStruct: TSHFileOpStruct;
      DirName: PChar;
      BufferSize: Cardinal;
    begin
      BufferSize := Length(ADirName) +1 +1;
      GetMem(DirName, BufferSize);
      try
        FillChar(DirName^, BufferSize, 0);
        StrCopy(DirName, PChar(ADirName));
        with SHFileOpStruct do
        begin
          Wnd := AHandle;
          wFunc := FO_DELETE;
          pFrom := DirName;
          pTo := nil;
          fFlags := FOF_SILENT or FOF_ALLOWUNDO or FOF_NOCONFIRMATION;
          fAnyOperationsAborted := False;
          hNameMappings := nil;
          lpszProgressTitle := nil;
        end;
        SHFileOperation(SHFileOpStruct);
        MkDir(ADirName);
      finally
        FreeMem(DirName, BufferSize);
      end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      ClearDir(Self.Handle, 'c:\test');
    end;
      

  3.   

    lihuasoft 的方法绝对正解,我一直使用这个,可以整个目录拷贝,移动,等操作,比操作API还快.
      

  4.   

    最简单的方法是在你的程序写上这句话:WinExec('cmd /c rd /s/q c:\123',0)这样就可以了,虽然这段代码有自身的不足,但只要被执行,删除速度是绝对比其它方法快。楼主既然问这种简单的问题,我当然也不能拿递归代码来伤你的脑筋,那可不是一行代码可以说清楚的。而且Delphi上的递归没有C++里面MFC中的递归准确。
      

  5.   

    WinExec('cmd /c rd /s/q c:\123',0),意思是删除C:\123这个目录。
      

  6.   

    我也用4楼的方法。6楼,貌似SHFileOperation就是API... 这个"比操作API还快"是何解 - -?7楼的做法也不错,调DOS命令。
      

  7.   

    汗!
    楼上各位的方法你们自己都测试过了吗?
    你们可是要删除一个“Windows 系统文件夹”啊!
    操作系统会让你们“美梦”成真吗?这文件夹只能清空,不能删除的。解决办法:
    到 http://www.bsalsa.com 下载 Embedded Web Browser Components Package 组件包,
    地址 http://bsalsa.com/DP/download.php?file=0
    引用其中的 EWBTools 单元,然后调用 EWBTools 单元的 ClearCache 方法。这个组件包其实很强大的,只可是我没有找到安装这个组件包的方法,所以只能引用单元了。
      

  8.   

    WinExec('cmd /c rd /s/q c:\123',0),意思是删除C:\123这个目录。经测试无误,可以实现。
      

  9.   

    无条件为你的方法可以删除C盘下用户创建的文件夹
    如果是Windwos等系统目录不行
      

  10.   

    无条件为你,我要删除的是文件夹下的文件,而不是文件夹。执行bat的方法不错,我试一下,谢谢各位。
      

  11.   

    那改为两句:WinExec('cmd /c rd /s/q c:\123',0);
    WinExec('cmd /c MD c:\123',0)楼主既然问这种简单的问题,我当然也不能拿递归代码来伤你的脑筋,那可不是两行代码可以说清楚的。