[C/C++] 파일 존재 여부 확인 하기(check the existence of file: access function example)
안녕하세요 JollyTree입니다.
윈도우, 리눅스 등 대부분의 환경에서 코딩을 하다보면 파일의 존재 여부를 검사하는 기능이 필요할 때가 있습니다. 여러가지 방법이 있지만, access 함수를 사용하면 쉽게 기능을 구현할 수 있습니다. 또한, 파일 읽기 쓰기의 권한 정보를 확인할 수 있습니다.
참고 : 본 예제 코드는 Visual Studio 2019 환경에서 작성되었습니다. 따라서 기존 POSIX function name 형태의 함수를 사용하기 위해서는 다음과 같이 Compiler Warning(level3)을 Off 해 주거나 access() 대신 _access()을 사용해야 합니다.
#pragma warning(disable: 4996) //코드 상단에 pragma 정의
그렇지 않으면 다음과 같은 에러가 발생합니다.
error C4996: 'access': The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: _access. See online help for details.
파일 존재 여부 확인 하기 예제(Example)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #pragma warning(disable: 4996) #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <io.h> int main() { char filename[256] = "codes.txt"; if((access(filename, 0) != -1)) //파일 존재 여부 체크 { printf("%s 파일이 존재합니다.\n", filename); if((access(filename, 4)) == -1) // 파일 읽기 권한 체크 printf("%s 파일은 읽기 권한이 없습니다.\n", filename); else printf("%s 파일은 읽기 권한이 있습니다.\n", filename); if((access(filename, 2)) == -1) // 파일 쓰기 권한 체크 printf("%s 파일은 쓰기 권한이 없습니다.\n", filename); else printf("%s 파일은 쓰기 권한이 있습니다.\n", filename); } else printf("%s 파일이 존재하지 않습니다.\n", filename); return 0; } |
실행결과