Документация DirectoryStream четко сказано:Итерация DirectoryStream и изменение содержимого каталога в то же время
итератора слабо согласуется. Он является потокобезопасным, но не Замораживает каталог во время итерации, поэтому он может (или не показывать) отражать обновления в каталоге, которые возникают после создания DirectoryStream .
На моей машине я выполнил простую итерацию по каталогу в режиме отладки. Перед завершением итерации я нарушил выполнение, добавил файл в повторяющийся и возобновленный каталог. Итерация не увидела дополнительный файл.
Мой вопрос: при каких обстоятельствах будет Итерация отражает обновления содержимого каталога? К сожалению, официальная документация очень расплывчата. По меньшей мере.
Я не знаю, но так, как я его читал, он недетерминирован и может зависеть от ОС OS/FS и конкретных реализаций. Мое лучшее предположение, что оно будет отражать обновления, если ваш каталог находится в inode, который расположен позже в дереве, чем текущий, на который указывает итератор. Как провоцировать такое поведение я не знаю. Я уверен, что это невозможно сразу (детерминированным образом) с использованием чистой Java. –