Сообщение Re[2]: как пользоваться std::filesystem::directory_iterator? от 05.09.2023 14:33
Изменено 05.09.2023 14:35 B0FEE664
Re[2]: как пользоваться std::filesystem::directory_iterator?
Здравствуйте, DiPaolo, Вы писали:
DP>Зависит от логики приложения. Первое, что приходит на ум, и самое простое — начинать итерирование заново. Но если у вас ваш второй процесс очень часто удаляет/добавляет файлы, то нужно как-то иначе организовать обработку.
Если мне просто нужно получить список файлов и не страшно, что он через секунду устареет, тогда как быть?
DP>https://en.cppreference.com/w/cpp/filesystem/directory_iterator:
DP>
Допустим у нас есть итератор на файл и этот файл кто-то удаляет, значит it->exists() вернёт false, а ++it передвинет итератор на следующий файл. Или же ++it бросит исключение?
DP>Зависит от логики приложения. Первое, что приходит на ум, и самое простое — начинать итерирование заново. Но если у вас ваш второй процесс очень часто удаляет/добавляет файлы, то нужно как-то иначе организовать обработку.
Если мне просто нужно получить список файлов и не страшно, что он через секунду устареет, тогда как быть?
DP>https://en.cppreference.com/w/cpp/filesystem/directory_iterator:
DP>
— это понятно — нет способа гарантировать что проход будет только по существующим файлам, но это не значит, что при проходе по списку итератором должна возникать ошибка.DP>If a file or a directory is deleted or added to the directory tree after the directory iterator has been created, it is unspecified whether the change would be observed through the iterator.
Допустим у нас есть итератор на файл и этот файл кто-то удаляет, значит it->exists() вернёт false, а ++it передвинет итератор на следующий файл. Или же ++it бросит исключение?
Re[2]: как пользоваться std::filesystem::directory_iterator?
Здравствуйте, DiPaolo, Вы писали:
DP>Зависит от логики приложения. Первое, что приходит на ум, и самое простое — начинать итерирование заново. Но если у вас ваш второй процесс очень часто удаляет/добавляет файлы, то нужно как-то иначе организовать обработку.
Если мне просто нужно получить список файлов и не страшно, что он через секунду устареет, тогда как быть?
DP>https://en.cppreference.com/w/cpp/filesystem/directory_iterator:
DP>
Допустим у нас есть итератор на файл и этот файл кто-тоудаляетудалил, значит it->exists() вернёт false, а ++it передвинет итератор на следующий файл. Или же ++it бросит исключение?
DP>Зависит от логики приложения. Первое, что приходит на ум, и самое простое — начинать итерирование заново. Но если у вас ваш второй процесс очень часто удаляет/добавляет файлы, то нужно как-то иначе организовать обработку.
Если мне просто нужно получить список файлов и не страшно, что он через секунду устареет, тогда как быть?
DP>https://en.cppreference.com/w/cpp/filesystem/directory_iterator:
DP>
— это понятно — нет способа гарантировать что проход будет только по существующим файлам, но это не значит, что при проходе по списку итератором должна возникать ошибка.DP>If a file or a directory is deleted or added to the directory tree after the directory iterator has been created, it is unspecified whether the change would be observed through the iterator.
Допустим у нас есть итератор на файл и этот файл кто-то