Чтение папки в Rust
Чтение папки отдает имена того, что лежит внутри. Команда возвращает итератор по записям каталога. Каждая запись снова оборачивается в результат: удача несет описание одного элемента, сбой сообщает о проблеме чтения.
Подготовим каталог и выведем имена:
use std::fs;
use std::io;
fn list_data() -> io::Result<()> {
for entry in fs::read_dir("data")? {
let item = entry?;
let name = item.file_name();
println!("{}", name.to_string_lossy());
}
Ok(())
}
fn main() -> io::Result<()> {
fs::create_dir_all("data")?;
fs::write("data/a.txt", "1")?;
fs::write("data/b.txt", "2")?;
list_data()?;
Ok(())
}
Можно отфильтровать только файлы по метаданным записи:
use std::fs;
use std::io;
fn main() -> io::Result<()> {
for entry in fs::read_dir("data")? {
let item = entry?;
let info = item.metadata()?;
if info.is_file() {
println!("{}", item.file_name().to_string_lossy());
}
}
Ok(())
}
Дан путь:
let path = "docs";
Создайте каталог с двумя файлами, прочитайте папку и выведите оба имени.
Дан путь:
let path = "data";
Посчитайте только файлы внутри и выведите число.
Скажите, сколько раз знак вопроса нужен в простом цикле по чтению папки.