C++에서 모든 파일/하위 디렉터리 (재귀 삭제)가있는 폴더를 삭제하려면 어떻게해야합니까?폴더 및 모든 파일/하위 디렉터리 삭제
답변
표준 C++은이를 수행 할 방법이 없습니다. 운영 체제 특정 코드 또는 Boost와 같은 교차 플랫폼 라이브러리를 사용해야합니다.
boost::remove_all
은 Boost.Filesystem에서 사용할 수 있습니다. 진심으로
:
system("rm -rf /path/to/directory")
아마도 더 당신이 찾고 있지만, 유닉스 특정하는지 :
/* Implement system("rm -rf") */
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <sys/syslimits.h>
#include <ftw.h>
/* Call unlink or rmdir on the path, as appropriate. */
int
rm(const char *path, const struct stat *s, int flag, struct FTW *f)
{
int status;
int (*rm_func)(const char *);
switch(flag) {
default: rm_func = unlink; break;
case FTW_DP: rm_func = rmdir;
}
if(status = rm_func(path), status != 0)
perror(path);
else
puts(path);
return status;
}
int
main(int argc, char **argv)
{
while(*++argv) {
if(nftw(*argv, rm, OPEN_MAX, FTW_DEPTH)) {
perror(*argv);
return EXIT_FAILURE;
}
}
return EXIT_SUCCESS;
}
downvoter의 플랫폼에 nftw가 없기 때문에 C++ 대신 C가 있기 때문에 downvoted 되었습니까? (g ++ -Wall -Wextra로 잘 컴파일되었지만)? downvote 때 제발, 제발! 이것은 견고한 코드입니다. –
'system ("rm -rf/path/to/directory")'는 어떻게 이식 가능합니까? * nix OS에서 작동합니까? Windows에서는 분명히 작동하지 않습니다. –
당신은 파일을 디렉토리를 탐색 및 삭제, readdir()
, nftw()
, ftw()
readdir_r()
을 사용할 수 있습니다 재귀 적으로.
그러나 ftw()
, nftw()
, readdir()
은 스레드로부터 안전하지 않으므로 프로그램이 멀티 스레드 환경에서 실행되는 경우 대신 readdir_r()
을 권장합니다.
- 1. C# 폴더 및 폴더 내의 모든 파일 및 폴더 삭제
- 2. 특정 폴더에서 모든 파일 및 폴더 삭제
- 3. 폴더 및 포함 파일 삭제
- 4. ASP.NET 세션 및 폴더 삭제
- 5. 잠긴 파일 및 폴더 삭제
- 6. 폴더 삭제
- 7. 지정된 폴더의 파일 및 폴더 삭제
- 8. 폴더 콘텐트 삭제 및 버전 관리에서 제거
- 9. 응용 프로그램에서 끌어서 놓기 폴더 내용 및 하위 디렉터리
- 10. Objective-C/C의 폴더 및 해당 하위 폴더 삭제
- 11. C# Stackoverflow 재귀 디렉터리 삭제 작업
- 12. 일부 파일을 압축 및 삭제 한 후 폴더 내의 폴더 삭제
- 13. TFS에서 폴더 삭제
- 14. maven scm plugin 모든 실행마다 출력 폴더 삭제
- 15. FTP 연결로 서버의 폴더 삭제
- 16. 삭제 된 리소스 폴더 복구
- 17. 오이 시나리오 후 폴더 삭제
- 18. 파일 이동, 폴더 삭제 및 mysql 쿼리 롤백
- 19. AppDomain 및 현재 디렉터리
- 20. ASP.NET 및 가상 디렉터리
- 21. PHP 재귀 파일 및 폴더 삭제 기능 : '디렉토리하지 빈'오류 메시지가
- 22. SharePoint 2010 PowerShell에서 파일/폴더 삭제
- 23. 특정 오프셋에서 모든 배열 값 삭제 및
- 24. 모든 자식 노드 및 요소의 텍스트 삭제
- 25. "모든 사용자"폴더
- 26. 모든 공유 폴더
- 27. 디렉터리 및 하위 디렉터리의 모든 SQL 스크립트를 실행하는 DOS 명령
- 28. .htaccess, mod_rewrite 및 하위 디렉터리
- 29. 네트워크에서 FileSystemObject를 사용하여 파일 및 폴더 삭제 경로
- 30. 폴더, 모든 하위 폴더 및 모든 파일에 대한 사용 권한 변경
그냥 측면 노드 :이 질문에 중복이 있습니다, 당신이 부스트에 의존하고 싶지 않다면, 그것은 인정 대답 [봐주는 가치가있다] (http://stackoverflow.com/a)/2256974/1312382). – Aconcagua