Delphi는 디렉토리 생성 및 삭제, 현재 디렉토리 설정, 현재 디렉토리 가져오기 등을 포함하여 파일 작업을 위한 다양한 기능을 제공합니다. 디렉터리 삭제에는 함수(Function) RemoveDir 및 프로시저(PROcedure) RmDir이 포함되지만, 이는 빈 디렉터리만 삭제할 수 있고, 비어 있지 않은 디렉터리는 삭제할 수 없습니다. 전체 디렉터리 트리(DelTree)를 삭제하려면 하위 디렉터리와 그 안의 파일을 삭제하는 프로그램을 작성해야 합니다.
디렉터리에 있는 파일은 DeleteFile 함수를 호출하여 삭제할 수 있지만 특수 파일(읽기 전용, 시스템, 숨김 등)은 효과적으로 삭제할 수 없습니다. 파일 속성을 일반 파일로 변경해야 삭제됩니다. FileSetAttr 함수를 사용하여 파일 속성을 변경할 수 있습니다. 여기서 특수 파일의 속성은 일반 파일 속성(속성 값은 0)으로 설정됩니다.
재귀적 방법에는 트리 디렉토리 구조가 가장 적합하다는 점을 고려하여 여기서는 재귀적 알고리즘을 사용하여 DelTree 기능을 구현합니다. 구체적인 시행 절차는 다음과 같습니다.
//path는 삭제할 디렉터리 경로입니다.
//디렉토리가 성공적으로 삭제되면 True를 반환하고, 그렇지 않으면 False를 반환합니다.
함수 TForm1.Deltree(경로: 문자열): 부울;
var
SearchRec: TSearchRec;
시작하다
//디렉토리가 존재하는지 확인
DirectoryExists(경로)가 있는 경우
시작하다
//디렉터리를 입력하고 그 안에 있는 하위 디렉터리와 파일을 삭제합니다.
oldDir := GetCurrentDir;
ChDir(경로);
//디렉토리에 있는 모든 파일 찾기
FindFirst('??.??', faAnyFile, SearchRec);
반복하다
//파일 속성을 일반 속성 값으로 수정합니다.
FileSetAttr(SearchRec.이름,0);
//디렉토리이고 . 및 ..가 아닌 경우 DelTree를 재귀적으로 호출합니다.
if(SearchRec.Attr 및 faDirectory > 0) then
시작하다
if(SearchRec.Name[1]<>′.′) then
if(Deltree가 아님(SearchRec.Name)) then
부서지다;
끝
//파일이면 직접 삭제
또 다른
if(DeleteFile(SearchRec.Name)이 아님)then
부서지다 ;
//끝까지 계속 검색
(FindNext(SearchRec)<>0) 까지;
//상위 디렉터리로 돌아가서 해당 디렉터리를 삭제합니다.
ChDir('..');
결과 := ReMoveDir(경로);
SetCurrentDir(oldDir);
끝
또 다른
결과 := 거짓 ;
끝 ;
이 프로그램은 Windows 98 및 Delphi 4.0에서 컴파일되고 전달됩니다.