mwultong Blog ... 프로그래밍 / 계산기

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

 
Tuesday, December 12, 2006

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


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

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



}



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

0 Comments:

<< Home RSS 2.0 feed

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