Friday, February 02, 2007
C언어 VC] 파일 속성; 읽기 전용 여부 판단 함수; is File Readonly?
파일을 읽고 쓰는 작업을 할 때, 해당 파일이 읽기 전용인지 아닌지 우선 알아내야 할 때가 있습니다. 필요할 때마다 속성 판단 코드를 삽입해 주는 것보다는 다음의 isFileReadonly() 함수와 같은 것을 미리 만들어 두고 쓰는 것이 편리합니다.
isFileReadonly("파일명") 함수는, 파라미터로 입력한 파일이, 읽기 전용일 때는 참(1)을, 아닐 때에는 거짓(0)을 반환합니다. 그리고 에러가 났을 때는 -1 을 반환합니다.
소스 파일명: example.cpp
※ 아래 박스 클릭 후, 키보드 화살표 키로 좌우 스크롤 가능함
컴파일 및 실행 결과 화면:
현재 디렉토리에 있는 test.txt 라는 파일의 속성을 검사합니다. 1번째 실행 때는 test.txt 를 보통 속성으로, 2번째 실행 때는 test.txt 를 읽기 전용으로 만든 후, 실행했습니다.
파일이 가진 속성들을 문자열로 표현하기: ▶▶ C언어-VC] 파일 속성(읽기전용/히든 속성 등) 출력; Print File Attributes: ARHS
isFileReadonly("파일명") 함수는, 파라미터로 입력한 파일이, 읽기 전용일 때는 참(1)을, 아닐 때에는 거짓(0)을 반환합니다. 그리고 에러가 났을 때는 -1 을 반환합니다.
Readonly(읽기 전용) 속성 검사 예제 소스
소스 파일명: example.cpp
※ 아래 박스 클릭 후, 키보드 화살표 키로 좌우 스크롤 가능함
#include <stdio.h>
#include <io.h>
int isFileReadonly(char* filename);
int main(void) {
char* filename = "test.txt";
if (isFileReadonly(filename) == 1)
puts("읽기 전용 파일입니다.");
else if (isFileReadonly(filename) == 0)
puts("읽기 전용이 아닙니다.");
else if (isFileReadonly(filename) == -1)
puts("에러가 났습니다.");
return 0;
}
int isFileReadonly(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_RDONLY) result = 1;
_findclose(hFile);
return result;
}
#include <io.h>
int isFileReadonly(char* filename);
int main(void) {
char* filename = "test.txt";
if (isFileReadonly(filename) == 1)
puts("읽기 전용 파일입니다.");
else if (isFileReadonly(filename) == 0)
puts("읽기 전용이 아닙니다.");
else if (isFileReadonly(filename) == -1)
puts("에러가 났습니다.");
return 0;
}
int isFileReadonly(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_RDONLY) result = 1;
_findclose(hFile);
return result;
}
컴파일 및 실행 결과 화면:
현재 디렉토리에 있는 test.txt 라는 파일의 속성을 검사합니다. 1번째 실행 때는 test.txt 를 보통 속성으로, 2번째 실행 때는 test.txt 를 읽기 전용으로 만든 후, 실행했습니다.
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>
파일이 가진 속성들을 문자열로 표현하기: ▶▶ C언어-VC] 파일 속성(읽기전용/히든 속성 등) 출력; Print File Attributes: ARHS
tag: cpp
C언어 | C/C++ (Visual C++)
<< Home