알짜게시판

[델파이] TDirectory.Delete 대신 CMD 으로 폴더 삭제

보통 Delphi 코드에서 폴더를 통째로 삭제할 때는 TDirectory.Delete(FDataDir, True)를 많이 사용한다. 이 방식은 안전하게 동작하지만, 내부적으로 모든 파일과 하위 폴더를 재귀적으로 확인하며 하나씩 삭제하기 때문에 파일 개수가 많을수록 시간이 오래 걸린다. 특히 프로그램 종료 직전에 캐시 폴더를 지울 때, 이 과정 때문에 종료가 늦게 끝나는 현상이 발생한다.

이 문제를 해결하기 위해 코드를 다음과 같이 바꿔봤다.

WinExec(PAnsiChar(AnsiString('cmd /c rd /s /q "' + FDataDir + '"')), SW_HIDE);

이 방식은 윈도우 명령어 rd /s /q를 호출하여 폴더 전체를 지우는 방법이다. 프로그램에서 직접 파일을 하나하나 처리하지 않고, 시스템이 최적화된 방식으로 삭제를 진행한다. 그 결과 삭제 속도가 눈에 띄게 빨라지고, 종료 과정에서 사용자가 기다리는 시간이 거의 사라진다.

추가로 좋은 점은 프로그램이 종료되더라도 cmd 프로세스가 백그라운드에서 계속 실행되어 삭제 작업을 이어간다는 점이다. 즉, 사용자는 프로그램이 곧바로 닫히는 것을 체감하면서 실제 파일 삭제는 알아서 진행된다.

정리하자면 TDirectory.Delete는 안전하고 표준적인 방법이지만, 캐시처럼 중요하지 않은 파일을 종료 직전에 대량으로 지울 때는 rd /s /q 방식이 훨씬 빠르고 사용자 경험이 좋다. 특히 파일 수가 많은 경우라면 두 방식의 차이가 크게 느껴질 것이다.

로그인 후 댓글내용을 입력해주세요

제목 글쓴이 조회 날짜
[칼무리] 외부 명령으로 캡처 자동화하기 1 11,931 25-10-14
[윈도우] 윈도11 강제업데이트 피하고 윈도10 계속 쓰기 14,067 25-10-12
[리눅스] PHP 파일 업로드 용량 늘리기 29,475 25-10-03
[HTML] 애드센스 충돌 문제 해결하기 50,696 25-09-20
[파이썬] Python Playwright로 Edge 브라우저 제어하기 63,386 25-09-12
[델파이] TDirectory.Delete 대신 CMD 으로 폴더 삭제 65,445 25-09-10
[윈도우] Chrome 및 Edge를 TLS 1.2 모드로 실행 73,381 25-08-30
[HTML] 애드센스 자동 광고 사용 시 빈 화면이 출력된다면? 158,476 25-06-20
[윈도우] 브라우저 환경설정 추출 144,948 25-06-18
[워드프레스] xmlrpc.php 차단으로 보안 강화하기 136,299 25-06-05
[델파이] 폼이 모니터 한 가운데 있는 경우 자연스럽게 왼쪽으로 이동시키기 133,883 25-05-26
[윈도우] WSH script registration is not valid. 133,991 25-05-23
[워드프레스] 제목 블록 기본값을 H5로 변경하는 방법 115,442 25-05-22
[파이썬] 동영상 특정 영역 모자이크(흐리게) 하기 47,044 25-04-30
[리눅스] 구글 크롬 콘솔 'Attestation check for Topics on' 에러 원인 & 해결방… 60,148 25-04-11
[크롬] 개발자 도구(DevTools)에서 붙여넣기 안될때 72,395 25-03-10
[그누보드] SmartEditor2Skin.html 다운로드 되는 현상 110,374 25-01-08
[윈도우] 네트워크 탐지 114,711 24-12-31
[델파이] TrayIcon 이 흐릿하게 보이는 버그? 수정 128,337 24-12-12
[델파이] 실행 중인 프로세스가 활성 창인지 확인하는 함수 145,642 24-11-02
[델파이] 메세지 다이어그램(Message Dialog) 에 체크박스(CheckBox) 추가 132,555 24-10-30
[그누보드] 부트스트랩 테마 예제로 사용중인 main.php 116,141 24-10-21
[그누보드] 유튜브 스킨 75,481 24-10-14
[윈도우] TLS 연결 끊김 해결 방법 - Kyber 비활성화 265,803 24-10-12
[PHP] 검색 로봇 접속시 종료 56,648 24-10-07
[윈도우] WinDivert 사용중인 어플리케이션 검색 45,934 24-09-12
[워드프레스] 답글 남기기 메시지 변경 43,105 24-09-05
[리눅스] PHP-FPM 튜닝을 위한 메모리 계산 41,677 24-08-29
[윈도우] 아이폰 벨소리 쉽게 추가하기 94,547 24-06-14
[윈도우] C:\Windows\Installer 폴더 다른 드라이브로 옮기기 105,243 24-05-29
[윈도우] 작업 표시줄 (기타 시스템 트레이 아이콘) 제거 프로그램 188,889 24-05-18
방수의신결혼준비성장노트책과지식꽃한송이