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

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

 
Monday, January 22, 2007

C언어-VC] 파일 속성(읽기전용/히든 속성 등) 출력; Print File Attributes: ARHS


윈도우의 각 파일에는 대부분 속성이 있습니다. 다음과 같은 것입니다.

A : 기록 가능 (백업 속성)
R : 읽기 전용 속성
H : 숨김(히든) 속성
S : 시스템 속성

비주얼C에서 파일의 속성을 얻은 후 화면에, [ARHS] 이런 형식의 문자열로 출력하는 방법입니다.


Visual C에서, 파일 속성 출력 예제


소스 파일명: 0.cpp
(현재 디렉토리에 "Beatles, The - All My Loving.mp3" 이런 이름의 파일이 있다고 가정하고...)
#include <stdio.h>
#include <stdlib.h> // exit()
#include <io.h>
#include <errno.h>

char* attribToString(unsigned attrib);


int main(void) {
  _finddatai64_t c_file;
  intptr_t hFile;
  char* filename = "Beatles, The - All My Loving.mp3";


  if ( (hFile = _findfirsti64(filename, &c_file)) == -1L ) {
    switch (errno) {
      case ENOENT:
        printf(":: 파일이 없음 ::\n"); break;
      case EINVAL:
        fprintf(stderr, "Invalid path name.\n"); exit(1); break;
      case ENOMEM:
        fprintf(stderr, "Not enough memory or file name too long.\n"); exit(1); break;
      default:
        fprintf(stderr, "Unknown error.\n"); exit(1); break;
    }
  } // end if
  else {
    printf("[%s]\n", attribToString(c_file.attrib));
  } // end else

  _findclose(hFile);


  return 0;
}




char* attribToString(unsigned attrib) {
  static char s[4 + 1];

  (attrib & _A_ARCH  ) ? s[0] = 'A' : s[0] = ' ';
  (attrib & _A_RDONLY) ? s[1] = 'R' : s[1] = ' ';
  (attrib & _A_HIDDEN) ? s[2] = 'H' : s[2] = ' ';
  (attrib & _A_SYSTEM) ? s[3] = 'S' : s[3] = ' ';

  return s;
}



컴파일 및 실행 결과:
(현재 디렉토리의 "Beatles, The - All My Loving.mp3" 라는 파일이 "읽기 전용 속성"만을 가지고 있을 때)
D:\Z>cl /nologo 0.cpp && 0.exe
0.cpp
[ R  ]

D:\Z>



출력 결과 설명


파일의 속성을 변경해 주면 출력 결과도 달라집니다.

아무 속성도 없을 때:
[    ]

백업 속성 주었을 때:
[A   ]

백업+읽기전용 속성 주었을 때:
[AR  ]

백업+읽기전용+히든 속성 주었을 때:
[ARH ]

백업+읽기전용+히든+시스템 속성까지 모두 주면:
[ARHS]


이제, 읽기전용 속성을 제거하면
[A HS]

백업 속성 제거하면:
[  HS]


시스템 속성 제거하면:
[  H ]


모든 속성 지웠을 때:
[    ]



▶▶ C언어 VC] 파일 속성; 읽기 전용 여부 판단 함수; is File Readonly?

▶▶ C언어 VC] 숨김 속성, 히든 파일 여부 판단 함수; is File Hidden?

▶▶ 파일의 '기록 가능 속성 (Archive File Attribute)' / '보관 속성'이란 무엇입니까? [QnA]

▶▶ C언어] 파일 타임 스탬프, 파일 날짜 시간 구하기 함수; File Time Stamp, Last Write Date


DIR 명령 구현 소스: ▶▶ C언어 VC] 도스 DIR 명령 구현; 파일 목록(리스트) 출력; 와일드 카드(Wild Card) 지원




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