Saturday, December 03, 2005
C언어 VC] 숨김 속성, 히든 파일 여부 판단 함수; is File Hidden?
좀 드문 경우지만, 어떤 파일이 숨김 속성 즉 "히든 파일"인지 아닌지 알아내야 할 때가 있습니다.
이때는 int isFileHidden(char* filename); 과 같은 함수를 미리 만들어 두고 쓰면 편리합니다.
isFileHidden("파일명") 함수는, 파라미터로 입력한 파일이, 숨김 속성 파일일 때는 참(1)을, 아닐 때에는 거짓(0)을 반환합니다. 그리고 에러가 났을 때는 -1 을 반환합니다.
소스 파일명: example.cpp
컴파일 및 실행 결과 화면:
(현재 디렉토리에 있는 test.txt 라는 파일의 속성을 검사합니다. 1번째 실행 때는 test.txt 를 보통 속성으로, 2번째 실행 때는 test.txt 를 히든 속성으로 만든 후 실행했습니다. 그리고 3번째는 test.txt 라는 파일을 지운 후 실행했기에 에러가 났습니다.)
파일이 가진 속성들을 ARHS 형식의 간단한 문자열로 표현: ▶▶ C언어-VC] 파일 속성(읽기전용/히든 속성 등) 출력; Print File Attributes: ARHS
이때는 int isFileHidden(char* filename); 과 같은 함수를 미리 만들어 두고 쓰면 편리합니다.
isFileHidden("파일명") 함수는, 파라미터로 입력한 파일이, 숨김 속성 파일일 때는 참(1)을, 아닐 때에는 거짓(0)을 반환합니다. 그리고 에러가 났을 때는 -1 을 반환합니다.
Hidden Attribute (숨김 속성) 체크 예제
소스 파일명: example.cpp
#include <stdio.h>
#include <io.h>
int isFileHidden(char* filename);
int main(void) {
char* filename = "test.txt";
if (isFileHidden(filename) == 1)
puts("숨김 파일입니다.");
else if (isFileHidden(filename) == 0)
puts("숨김 파일이 아닙니다.");
else if (isFileHidden(filename) == -1)
puts("에러가 났습니다.");
return 0;
}
int isFileHidden(char* filename) {
_finddatai64_t c_file;
intptr_t hFile;
int result = 0;
if ( (hFile = _findfirsti64(filename, &c_file)) == -1L )
result = -1;
else
if (c_file.attrib & _A_HIDDEN) result = 1;
_findclose(hFile);
return result;
}
#include <io.h>
int isFileHidden(char* filename);
int main(void) {
char* filename = "test.txt";
if (isFileHidden(filename) == 1)
puts("숨김 파일입니다.");
else if (isFileHidden(filename) == 0)
puts("숨김 파일이 아닙니다.");
else if (isFileHidden(filename) == -1)
puts("에러가 났습니다.");
return 0;
}
int isFileHidden(char* filename) {
_finddatai64_t c_file;
intptr_t hFile;
int result = 0;
if ( (hFile = _findfirsti64(filename, &c_file)) == -1L )
result = -1;
else
if (c_file.attrib & _A_HIDDEN) result = 1;
_findclose(hFile);
return result;
}
컴파일 및 실행 결과 화면:
(현재 디렉토리에 있는 test.txt 라는 파일의 속성을 검사합니다. 1번째 실행 때는 test.txt 를 보통 속성으로, 2번째 실행 때는 test.txt 를 히든 속성으로 만든 후 실행했습니다. 그리고 3번째는 test.txt 라는 파일을 지운 후 실행했기에 에러가 났습니다.)
D:\Z>cl /nologo example.cpp && example.exe
example.cpp
숨김 파일이 아닙니다.
D:\Z>cl /nologo example.cpp && example.exe
example.cpp
숨김 파일입니다.
D:\Z>cl /nologo example.cpp && example.exe
example.cpp
에러가 났습니다.
D:\Z>
example.cpp
숨김 파일이 아닙니다.
D:\Z>cl /nologo example.cpp && example.exe
example.cpp
숨김 파일입니다.
D:\Z>cl /nologo example.cpp && example.exe
example.cpp
에러가 났습니다.
D:\Z>
파일이 가진 속성들을 ARHS 형식의 간단한 문자열로 표현: ▶▶ C언어-VC] 파일 속성(읽기전용/히든 속성 등) 출력; Print File Attributes: ARHS
tag: cpp
C언어 | C/C++ (Visual C++)
<< Home