Проверка и создание каталога

Я хочу проверить, а затем создать каталог, если он еще не существует.

Я использовал следующий код:

#define APP_DATA_DIR_CHILD_2  "./child2"

g_nResult = GetFileAttributes((wchar_t*)APP_DATA_DIR_CHILD_2);
if (g_nResult <= 0)
{
    g_nResult = mkdir(APP_DATA_DIR_CHILD_2);
}

Но это не проверка должным образом. Я получаю -1 вернулся в GetFileAttributes() даже после того, как каталог был создан.

Может ли кто-нибудь помочь, пожалуйста?

PS: Я также хотел бы убедиться, что код работает как на Linux, так и на Windows.

1 ответ

Решение

Замещать

#define APP_DATA_DIR_CHILD_2                    "./child2"
g_nResult = GetFileAttributes((wchar_t*)APP_DATA_DIR_CHILD_2);

By (если определен Unicode)

#define APP_DATA_DIR_CHILD_2                    L"./child2"
g_nResult = GetFileAttributes(APP_DATA_DIR_CHILD_2);

Ваш код далеко от портативного... Вместо этого используйте stat

struct stat sts;
if ( stat(APP_DATA_DIR_CHILD_2, &sts) != 0) {
    // Fail to get info about the file, may not exist...
}
else {
    if (S_ISDIR(sts.st_mode)) {  /* The file is a directory... */ }
}

Посмотрите документацию: http://linux.die.net/man/2/stat

Другие вопросы по тегам