用Delphi編寫DelTree程序


  Delphi提供了關於文件操作的許多函數,其中關於目錄操作的有目錄的創建與刪除、設置當前目錄、獲取當前目錄等。目錄的刪除有函數(Function)RemoveDir和過程(Procedure)RmDir,但它們都只能刪除空目錄,對於非空目錄則不能刪除。要實現刪除整個目錄樹(DelTree)必須編寫程序來刪除其中的子目錄和文件。

  目錄中的文件可以通過調用函數DeleteFile來刪除,但對於特殊文件(只讀、系統、隱藏等)則不能有效刪除,必須更改文件屬性爲普通文件才能刪除。更改文件屬性可以用函數FileSetAttr,這裏將特殊文件的屬性設置爲普通文件屬性(屬性值爲0)。

  考慮到樹型目錄結構最適合於遞歸方法,所有這裏用遞歸算法來實現DelTree函數。下面是具體實現程序。

  //path是需刪除的目錄路徑

  //目錄成功刪除返回True,否則返回False

  function TForm1.Deltree (path : string): Boolean ;

  var

   SearchRec: TSearchRec;

  begin

  //判斷目錄是否存在

if DirectoryExists(path) then

begin

  //進入該目錄,刪除其中的子目錄和文件

   oldDir := GetCurrentDir;

   ChDir(path);

  //查找目錄中所有任何文件

  FindFirst(′.′, faAnyFile, SearchRec);

  repeat

  //修改文件屬性爲普通屬性值

   FileSetAttr(SearchRec.Name,0);

  //如果是目錄並且不是.和..則遞歸調用DelTree

  if(SearchRec.Attr and faDirectory > 0) then

  begin

  if(SearchRec.Name[1]<>′.′) then

  if(not Deltree(SearchRec.Name)) then

  break;

  end

  //如果是文件直接刪除

  else

  if(not DeleteFile(SearchRec.Name))then

  break ;

  //繼續查找,直到最後

  until (FindNext(SearchRec)<>0) ;

  //回到父目錄,刪除該目錄

  ChDir(′..′);

  Result := ReMoveDir(path);

SetCurrentDir(oldDir);

  end

  else

  Result := False ;

  end ;

  該程序在Windows 98、Delphi 4.0下編譯通過。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章