Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

표준 C/C++로 파일 존재 여부를 확인하는 가장 좋은 방법

파일 존재 여부 확인의 기본 원리

표준 C/C++에는 파일의 존재 여부를 직접 반환해 주는 전용 함수가 없습니다. 따라서 가장 확실하고 이식성 높은 방법은 해당 파일을 읽기 또는 쓰기 모드로 실제로 열어 보는 것입니다. 파일 열기에 성공하면 파일이 존재하는 것이며, 실패하면 파일이 없거나 접근 권한이 없는 경우입니다.

다음은 C와 C++에서 이를 구현한 예시 코드입니다.

C에서 파일 존재 여부 확인하기

C에서는 <stdio.h> 헤더에 정의된 fopen() 함수를 사용해 파일을 열어 볼 수 있습니다. fopen()이 NULL이 아닌 값을 반환하면 파일 열기에 성공한 것이므로, 사용 후에는 반드시 fclose()로 파일을 닫아 주어야 합니다.

예제 코드

#include<stdio.h>
int main() {
    /* 파일을 읽기 모드로 열어 봅니다 */
    FILE *file;
    if (file = fopen("a.txt", "r")) {
        fclose(file);
        printf("file exists");
    } else {
        printf("file doesn't exist");
    }
}

실행 결과

file exists

C++에서 파일 존재 여부 확인하기

C++에서는 <fstream> 헤더의 ifstream 클래스를 사용하면 더욱 간결하게 처리할 수 있습니다. ifstream 객체는 파일 열기 성공 여부를 불리언 값처럼 평가할 수 있으므로, 조건문에서 바로 활용하기 좋습니다.

예제 코드

#include <fstream>
#include<iostream>
using namespace std;
int main() {
    /* 파일을 읽기 모드로 열어 봅니다 */
    ifstream ifile;
    ifile.open("b.txt");
    if(ifile) {
        cout<<"file exists";
    } else {
        cout<<"file doesn't exist";
    }
}

실행 결과

file doesn't exist

정리

표준 라이브러리만으로 파일 존재 여부를 확인하려면 파일을 직접 열어 보는 것이 가장 안전하고 호환성이 좋은 방법입니다. 다만 파일이 실제로 존재하더라도 권한 부족 등의 이유로 열기에 실패할 수 있으므로, 필요에 따라 오류의 원인을 함께 확인하는 것이 좋습니다.