【C言語】ディレクトリ(フォルダ)が存在するか確認する方法

この記事では、C言語でディレクトリの存在を確認する方法について解説します。

具体的には、stat関数opendir関数access関数の3つの方法を紹介します。

目次から探す

C言語でディレクトリの存在を確認する方法

C言語では、いくつかの方法を使用してディレクトリの存在を確認することができます。

以下では、代表的な3つの方法について説明します。

stat関数を使用する方法

まず最初の方法は、stat関数を使用する方法です。

stat関数は、指定されたファイルまたはディレクトリの情報を取得するために使用されます。

以下のサンプルコードは、stat関数を使用してディレクトリの存在を確認する方法を示しています。


#include <stdio.h>
#include <sys/stat.h>
int main() {
    struct stat st;
    char* path = "ディレクトリのパス";
    if (stat(path, &st) == 0 && S_ISDIR(st.st_mode)) {
        printf("ディレクトリが存在します。\n");
    } else {
        printf("ディレクトリが存在しません。\n");
    }
    return 0;
}

上記のコードでは、stat関数を使用して指定されたパスの情報を取得し、S_ISDIRマクロを使用してディレクトリであるかどうかを確認しています。

もしディレクトリが存在する場合は、「ディレクトリが存在します。」と表示され、存在しない場合は「ディレクトリが存在しません。」と表示されます。

opendir関数を使用する方法

次に、opendir関数を使用する方法です。

opendir関数は、指定されたディレクトリを開くために使用されます。

もしディレクトリが開ければ、そのディレクトリが存在することがわかります。

以下のサンプルコードは、opendir関数を使用してディレクトリの存在を確認する方法を示しています。


#include <stdio.h>
#include <dirent.h>
int main() {
    DIR* dir;
    char* path = "ディレクトリのパス";
    if ((dir = opendir(path)) != NULL) {
        printf("ディレクトリが存在します。\n");
        closedir(dir);
    } else {
        printf("ディレクトリが存在しません。\n");
    }
    return 0;
}

上記のコードでは、opendir関数を使用して指定されたパスのディレクトリを開き、成功した場合は「ディレクトリが存在します。」と表示されます。

開けなかった場合は「ディレクトリが存在しません。」と表示されます。

最後に、closedir関数を使用してディレクトリを閉じます。

access関数を使用する方法

最後に、access関数を使用する方法です。

access関数は、指定されたファイルまたはディレクトリにアクセスできるかどうかを確認するために使用されます。

以下のサンプルコードは、access関数を使用してディレクトリの存在を確認する方法を示しています。


#include <stdio.h>
#include <unistd.h>
int main() {
    char* path = "ディレクトリのパス";
    if (access(path, F_OK) == 0) {
        printf("ディレクトリが存在します。\n");
    } else {
        printf("ディレクトリが存在しません。\n");
    }
    return 0;
}

上記のコードでは、access関数を使用して指定されたパスのディレクトリにアクセスできるかどうかを確認しています。

もしアクセスできる場合は「ディレクトリが存在します。」と表示され、アクセスできない場合は「ディレクトリが存在しません。」と表示されます。

以上が、C言語でディレクトリの存在を確認する方法の説明です。

それぞれの方法には特徴がありますので、使用する場面に応じて適切な方法を選択してください。

目次から探す