Coding & Programming/C, C++

[C/C++] 파일 존재 여부 확인 하기(check the existence of file: access function example)

mainCodes 2021. 2. 28. 08:43

[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;
}
 

실행결과