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 방식이 훨씬 빠르고 사용자 경험이 좋다. 특히 파일 수가 많은 경우라면 두 방식의 차이가 크게 느껴질 것이다.

Comments

Tips & Tech

Delphi TDirectory.Delete 대신 CMD 으로 폴더 삭제
Dev tips 애드센스 자동 광고 사용 시 빈 화면이 출력된다면?
WordPress xmlrpc.php 차단으로 보안 강화하기
Delphi 폼이 모니터 한 가운데 있는 경우 자연스럽게 왼쪽으로 …
Windows WSH script registration is not valid.
WordPress 제목 블록 기본값을 H5로 변경하는 방법
Python 동영상 특정 영역 모자이크(흐리게) 하기
Linux 구글 크롬 콘솔 'Attestation check for Topics on' 에…
Others 크롬 - 개발자 도구(DevTools)에서 붙여넣기 안될때
GnuBoard SmartEditor2Skin.html 다운로드 되는 현상
Dev tips 검색 로봇 접속시 종료
Linux PHP-FPM 튜닝을 위한 메모리 계산
Windows 아이폰 벨소리 쉽게 추가하기
Windows C:\Windows\Installer 폴더 다른 드라이브로 옮기기
Dev tips REQUEST 값 받기(application/json 포함)
Linux 데몬(systemd service) 작성 및 실행하기
Dev tips 업데이트 이후 에러 발생([ERROR] Incorrect definition…
Others 구글 크롬 탭검색 비활성화
Dev tips MySQL, MariaDB 업데이트
Others 아이폰 - 비공개 릴레이로 HTTPS 감청 막기
Windows Windows에 Rust 설치하기
Dev tips [RN] android directory was detected in the project.
Linux 메일(Mail) 삭제/초기화
Delphi 윈도우 알림센터에 메시지 출력하기
Others 텔레그램 봇 (Telegram Bot) 만들기
Dev tips [부트스트랩] nav 에서 하위 항목 활성화 시 부모 항목 …
Linux PHP 버전 추가하기
Dev tips Curl 접속 속도가 늦은 경우
Windows 파일 내용 검색
Dev tips unblock with 'mysqladmin flush-hosts' 에러