用Delphi編寫DelTree程序
發(fā)表時間:2024-02-24 來源:明輝站整理相關軟件相關文章人氣:
[摘要]Delphi提供了關于文件操作的許多函數(shù),其中關于目錄操作的有目錄的創(chuàng)建與刪除、設置當前目錄、獲取當前目錄等。目錄的刪除有函數(shù)(Function)RemoveDir和過程(Procedure)RmDir,但它們都只能刪除空目錄,對于非空目錄則不能刪除。要實現(xiàn)刪除整個目錄樹(DelTree)必須編寫...
Delphi提供了關于文件操作的許多函數(shù),其中關于目錄操作的有目錄的創(chuàng)建與刪除、設置當前目錄、獲取當前目錄等。目錄的刪除有函數(shù)(Function)RemoveDir和過程(Procedure)RmDir,但它們都只能刪除空目錄,對于非空目錄則不能刪除。要實現(xiàn)刪除整個目錄樹(DelTree)必須編寫程序來刪除其中的子目錄和文件。
目錄中的文件可以通過調用函數(shù)DeleteFile來刪除,但對于特殊文件(只讀、系統(tǒng)、隱藏等)則不能有效刪除,必須更改文件屬性為普通文件才能刪除。更改文件屬性可以用函數(shù)FileSetAttr,這里將特殊文件的屬性設置為普通文件屬性(屬性值為0)。
考慮到樹型目錄結構最適合于遞歸方法,所有這里用遞歸算法來實現(xiàn)DelTree函數(shù)。下面是具體實現(xiàn)程序。
//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 ;
//繼續(xù)查找,直到最后
until (FindNext(SearchRec)<>0) ;
//回到父目錄,刪除該目錄
ChDir(′..′);
Result := ReMoveDir(path);
SetCurrentDir(oldDir);
end
else
Result := False ;
end ;
該程序在Windows 98、Delphi 4.0下編譯通過。