程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 用Delphi編寫DelTree程序

用Delphi編寫DelTree程序

編輯:Delphi
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 ;
  
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved