Методы для итерации каждого файла в каталоге (в C на Windows)? - PullRequest
0 голосов
/ 16 апреля 2019

Я искал методы, с помощью которых можно отслеживать каталог для создания / изменения файлов и т. Д. Однако все предыдущие посты, которые я нашел для Windows, относятся к C ++.

Microsoft перечисляет ReadDirectoryChangesW, но это тоже для C ++ (у меня нет знаний, чтобы оценить, совместимы ли они для C). У меня есть только знания по inotify для Linux, что довольно просто, и мне интересно, есть ли какие-нибудь простые примеры эквивалента Windows? (Я не хочу использовать inotify в Windows, хотя это технически достижимо).

1 Ответ

0 голосов
/ 17 апреля 2019

Если вы просто ищете методы, возможно, это немного поможет: https://www.geeksforgeeks.org/c-program-list-files-sub-directories-directory/ (просто скопируйте код на всякий случай)

Протестировано на машине linux и похоже на работу. Не рекурсивный, хотя.

int main(void) 
{ 
        struct dirent *de; /* Pointer for directory entry */

        /* opendir() returns a pointer of DIR type. */ 
        DIR *dr = opendir("."); 

        if (dr == NULL) /* opendir returns NULL if couldn't open directory */
        { 
                printf("Could not open current directory" ); 
                return 0; 
        } 

        /* Refer http://pubs.opengroup.org/onlinepubs/7990989775/xsh/readdir.html 
          for readdir() */
        while ((de = readdir(dr)) != NULL) 
                        printf("%s\n", de->d_name); 

        closedir(dr);    
        return 0; 
}

Также посмотрите этот вопрос, если вам нужно проверить, является ли указанный файл каталогом: Проверка наличия директ. запись, возвращаемая readdir, является каталогом, ссылкой или файлом

Этот метод может быть не таким переносимым, как кажется, но стоит попробовать.

Ура!

...