Tuesday, December 12, 2006
C언어] 디렉토리 지우기, 폴더 삭제 함수 사용법; Delete Directory, Remove Folder
C에서는, _rmdir() 함수로 디렉토리를 지울 수 있습니다. 단, "비어 있지 않은 디렉토리", "현재 디렉토리"나 "루트 디렉토리"는 지울 수 없습니다.
_rmdir() 함수는, 삭제에 성공했을 때는 0을, 실패했을 때는 -1을 반환합니다.
rmdir() 이 아닌 _rmdir() 함수를 사용하는 것이 좋습니다.
소스 파일명: 0.cpp
(현재 디렉토리 밑의, 000999 라는, 비어 있는 서브디렉토리를 지우는 예제입니다.)
비어 있지 않은 디렉토리를 지우려 하면 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
☞ C/C++
_rmdir() 함수는, 삭제에 성공했을 때는 0을, 실패했을 때는 -1을 반환합니다.
rmdir() 이 아닌 _rmdir() 함수를 사용하는 것이 좋습니다.
디렉토리 지우는 예제; _rmdir(), rmdir()
소스 파일명: 0.cpp
(현재 디렉토리 밑의, 000999 라는, 비어 있는 서브디렉토리를 지우는 예제입니다.)
#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
☞ C/C++
Post a Comment
<< Home