明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

用Delphi編寫DelTree程序

[摘要]Delphi提供了關(guān)于文件操作的許多函數(shù),其中關(guān)于目錄操作的有目錄的創(chuàng)建與刪除、設(shè)置當(dāng)前目錄、獲取當(dāng)前目錄等。目錄的刪除有函數(shù)(Function)RemoveDir和過程(Procedure)RmDir,但它們都只能刪除空目錄,對(duì)于非空目錄則不能刪除。要實(shí)現(xiàn)刪除整個(gè)目錄樹(DelTree)必須編寫...
Delphi提供了關(guān)于文件操作的許多函數(shù),其中關(guān)于目錄操作的有目錄的創(chuàng)建與刪除、設(shè)置當(dāng)前目錄、獲取當(dāng)前目錄等。目錄的刪除有函數(shù)(Function)RemoveDir和過程(Procedure)RmDir,但它們都只能刪除空目錄,對(duì)于非空目錄則不能刪除。要實(shí)現(xiàn)刪除整個(gè)目錄樹(DelTree)必須編寫程序來刪除其中的子目錄和文件。

  目錄中的文件可以通過調(diào)用函數(shù)DeleteFile來刪除,但對(duì)于特殊文件(只讀、系統(tǒng)、隱藏等)則不能有效刪除,必須更改文件屬性為普通文件才能刪除。更改文件屬性可以用函數(shù)FileSetAttr,這里將特殊文件的屬性設(shè)置為普通文件屬性(屬性值為0)。

  考慮到樹型目錄結(jié)構(gòu)最適合于遞歸方法,所有這里用遞歸算法來實(shí)現(xiàn)DelTree函數(shù)。下面是具體實(shí)現(xiàn)程序。

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

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

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

  var

   SearchRec: TSearchRec;

  begin

  //判斷目錄是否存在

if DirectoryExists(path) then

begin

  //進(jìn)入該目錄,刪除其中的子目錄和文件

   oldDir := GetCurrentDir;

   ChDir(path);

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

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

  repeat

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

   FileSetAttr(SearchRec.Name,0);

  //如果是目錄并且不是.和..則遞歸調(diào)用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 ;

  //繼續(xù)查找,直到最后

  until (FindNext(SearchRec)<>0) ;

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

  ChDir(′..′);

  Result := ReMoveDir(path);

SetCurrentDir(oldDir);

  end

  else

  Result := False ;

  end ;

  該程序在Windows 98、Delphi 4.0下編譯通過。