How can I check if a directory exists? How can I check if a directory exists? linux linux

How can I check if a directory exists?


You can use opendir() and check if ENOENT == errno on failure:

#include <dirent.h>#include <errno.h>DIR* dir = opendir("mydir");if (dir) {    /* Directory exists. */    closedir(dir);} else if (ENOENT == errno) {    /* Directory does not exist. */} else {    /* opendir() failed for some other reason. */}


Use the following code to check if a folder exists. It works on both Windows & Linux platforms.

#include <stdio.h>#include <sys/stat.h>int main(int argc, char* argv[]){    const char* folder;    //folder = "C:\\Users\\SaMaN\\Desktop\\Ppln";    folder = "/tmp";    struct stat sb;    if (stat(folder, &sb) == 0 && S_ISDIR(sb.st_mode)) {        printf("YES\n");    } else {        printf("NO\n");    }}


You might use stat() and pass it the address of a struct stat, then check its member st_mode for having S_IFDIR set.

#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>...char d[] = "mydir";struct stat s = {0};if (!stat(d, &s))  printf("'%s' is %sa directory.\n", d, (s.st_mode & S_IFDIR)  : "" ? "not ");  // (s.st_mode & S_IFDIR) can be replaced with S_ISDIR(s.st_mode)else  perror("stat()");