Как я могу проверить, является ли каталог пустым в Rust? - PullRequest
3 голосов
/ 25 июня 2019

Я работаю над инструментом CLI, который избегает засорения существующего каталога существующими файлами, но не заботится, не существует ли каталог или он пуст.

Я знаю, что могу использовать .exists(), чтобы увидеть, указывает ли PathBuf на существующий файл / каталог, и .is_dir(), чтобы увидеть, является ли он каталогом, но как мне проверить, пуст ли каталог?

1 Ответ

4 голосов
/ 25 июня 2019

Вы можете использовать .read_dir(), чтобы получить итератор для записей каталога.. и .. пропускаются, поэтому, если первый вызов next() на итераторе возвращает None, вы знаете, что каталог пуст.

let is_empty = dir_path_buf.read_dir().next()?.is_none();

Если вы используете Unix (POSIX,действительно) другой способ сделать это - создать новый временный каталог и попытаться переименовать его в каталог PathBuf.Вызов rename(), отличный от утилиты mv, переименует каталог, если цель не существует или пустой каталог .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...