Tuesday, December 12, 2006
C언어] 디렉토리 지우기, 폴더 삭제 함수 사용법; Delete Directory, Remove Folder
C에서는 _rmdir() 함수로 디렉토리를 지울 수 있습니다. 단, "비어 있지 않은 디렉토리", "현재 디렉토리"나 "루트 디렉토리"는 지울 수 없습니다.
_rmdir() 함수는, 삭제에 성공했을 때는 0을, 실패했을 때는 -1을 반환합니다.
rmdir() 이 아닌 _rmdir() 함수를 사용하는 것이 좋습니다.
(현재 디렉토리 밑의, 000999 라는, 비어 있는 서브디렉토리를 지우는 예제입니다.)
소스 파일명: 0.cpp
※ 아래 박스 클릭 후, 키보드 화살표 키로 좌우 스크롤 가능함
* 비어 있지 않은 디렉토리를 지우려 하면 Directory is not empty (빈 디렉토리가 아니다) 라는 에러가 납니다.
* 존재하지 않는 디렉토리명을 지정하면, No such directory (그런 디렉토리가 없다) 라는 에러가 납니다.
* 읽기 전용 속성의 디렉토리(폴더)일 경우에는 Access is denied (접근이 거부되었다) 라는 에러가 납니다.
* 디렉토리가 아닌 "파일"을 지우려고 하면 Unknown error (알 수 없는 에러) 가 납니다. ENOTDIR (Not a directory; 디렉토리가 아니다) 상수가 인식되지 않더군요 -_-?
(업데이트: 비주얼C++ 2005에서는 ENOTDIR 상수를 쓸 수 있을 것입니다. 그리고 VC++ 2005에서는 EACCES 상수를 EACCESS 이렇게 해야 하는 것 같습니다.)
디렉토리가 아닌, 파일을 지우는 법: ▶▶ C언어] 파일 지우기, 파일 삭제 함수 사용법; Delete File, Remove File
_rmdir() 함수는, 삭제에 성공했을 때는 0을, 실패했을 때는 -1을 반환합니다.
rmdir() 이 아닌 _rmdir() 함수를 사용하는 것이 좋습니다.
디렉토리 지우는 예제 소스; _rmdir(), rmdir()
(현재 디렉토리 밑의, 000999 라는, 비어 있는 서브디렉토리를 지우는 예제입니다.)
소스 파일명: 0.cpp
※ 아래 박스 클릭 후, 키보드 화살표 키로 좌우 스크롤 가능함
#include <stdio.h>
#include <direct.h> // _rmdir()
#include <errno.h>
int main(void) {
char s[] = "000999";
if (_rmdir(s)) {
switch (errno) {
case ENOTEMPTY:
fprintf(stderr, "Directory is not empty: %s\n", s); break;
case ENOENT:
fprintf(stderr, "No such directory: %s\n", s); break;
case EACCES:
fprintf(stderr, "Access is denied: %s\n", s); break;
default:
fprintf(stderr, "Unknown error.\n"); break;
}
} else
printf("Deleted: %s\n", s);
}
#include <direct.h> // _rmdir()
#include <errno.h>
int main(void) {
char s[] = "000999";
if (_rmdir(s)) {
switch (errno) {
case ENOTEMPTY:
fprintf(stderr, "Directory is not empty: %s\n", s); break;
case ENOENT:
fprintf(stderr, "No such directory: %s\n", s); break;
case EACCES:
fprintf(stderr, "Access is denied: %s\n", s); break;
default:
fprintf(stderr, "Unknown error.\n"); break;
}
} else
printf("Deleted: %s\n", s);
}
* 비어 있지 않은 디렉토리를 지우려 하면 Directory is not empty (빈 디렉토리가 아니다) 라는 에러가 납니다.
* 존재하지 않는 디렉토리명을 지정하면, No such directory (그런 디렉토리가 없다) 라는 에러가 납니다.
* 읽기 전용 속성의 디렉토리(폴더)일 경우에는 Access is denied (접근이 거부되었다) 라는 에러가 납니다.
* 디렉토리가 아닌 "파일"을 지우려고 하면 Unknown error (알 수 없는 에러) 가 납니다. ENOTDIR (Not a directory; 디렉토리가 아니다) 상수가 인식되지 않더군요 -_-?
(업데이트: 비주얼C++ 2005에서는 ENOTDIR 상수를 쓸 수 있을 것입니다. 그리고 VC++ 2005에서는 EACCES 상수를 EACCESS 이렇게 해야 하는 것 같습니다.)
디렉토리가 아닌, 파일을 지우는 법: ▶▶ C언어] 파일 지우기, 파일 삭제 함수 사용법; Delete File, Remove File
tag: cpp
C언어 | C/C++ (Visual C++)
<< Home