컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Tuesday, December 12, 2006

C언어] 디렉토리 지우기, 폴더 삭제 함수 사용법; Delete Directory, Remove Folder


C에서는, _rmdir() 함수로 디렉토리를 지울 수 있습니다. 단, "비어 있지 않은 디렉토리", "현재 디렉토리"나 "루트 디렉토리"는 지울 수 없습니다.

_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);



}



비어 있지 않은 디렉토리를 지우려 하면 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++

0 Comments:

Post a Comment

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top