use walkdir::WalkDir;
use std::fs::File;
use std::io::{Write, BufWriter};
use my_logger::{log, logw};
pub fn list_files(folder_to_list: &str) -> i32 {
log!("STATUS: Listing files: Please wait...");
let mut count = 0;
let mut filenames = Vec::new();
for file in WalkDir::new(&folder_to_list).into_iter().filter_map(|file| file.ok()) {
if let Ok(metadata) = file.metadata() {
if metadata.is_file() {
count += 1;
filenames.push(file.path().display().to_string());
}
} else if let Some(error) = file.metadata().err() {
log!("ERROR: Can't access file: {:?}: {}", file.path(), error);
}
}
if let Ok(file) = File::create("file_list.txt") {
let mut writer = BufWriter::new(file);
for filename in &filenames {
if let Err(error) = writeln!(writer, "{}", filename) {
log!("ERROR: writing to file_list.txt: {}", error);
}
}
} else {
log!("ERROR: Failed to create file_list.txt");
}
logw!("STATUS: List of files: Succes !");
count
}