Crates.io | dir-meta |
lib.rs | dir-meta |
version | 0.5.3 |
source | src |
created_at | 2023-11-22 12:51:40.40474 |
updated_at | 2024-01-04 14:58:42.000166 |
description | Read a directory and get back all files and errors from the read operation |
homepage | https://github.com/448-engineering/DirMeta.git |
repository | https://github.com/448-engineering/DirMeta.git |
max_upload_size | |
id | 1045136 |
size | 79,181 |
This crate adds the ability to recursively walk through a directory in an async fashion. The result is metadata about the directory which currently includes:
Get the total size of the directory in bytes
Get the size of files
Formatting of the file and directory sizes in human readable format (B, KiB, MiB, ...)
Fetch all the directories
Fetch all the files
Fetch the created, assessed and modified timestamps in Tai64N (monotonic, no leap seconds) timstamps
Fetch the created, assessed and modified timestamps in Local time (24 hour / 12 hour format)
format timestamps according to duration
Get the file format eg PDF or plain text
Returns all the files and directories in current directory with any errors that occur instead of just returning the error when error is encountered (like fs::read_dir()
)
Use parallelism where applicable (TODO)
[dependencies]
dir-meta = {version = "*", default-features = false} #deactivate methods for converting timestamps to human readable formats in local time setting `default-features` to `false`
smol::block_on(async {
// Read a directory
let outcome = dir_meta::DirMetadata::new("src").dir_metadata().await.unwrap();
dbg!(&outcome);
// Get size of directory formatted as human readable
dbg!(outcome.size_formatted());
// Iterate over the files
for file in outcome.files() {
dbg!(&file.name()); //Get file name
dbg!(&file.accessed_24hr()); // Get last accessed time in 24 hour format
dbg!(file.accessed_am_pm()); //Get last accessed time in 12 hour format
dbg!(&file.accessed_humatime()); //Get last accessed time based on duration since current time
dbg!(&file.created_24hr()); //Get last created time in 24 hour format
dbg!(&file.created_am_pm()); //Get last created time in 24 hour format
dbg!(&file.created_humatime()); //Get last created time based on duration since current time
dbg!(&file.modified_24hr()); //Get last modified time in 24 hour format
dbg!(&file.modified_am_pm()); //Get last modified time in 24 hour format
dbg!(&file.modified_humatime()); //Get last modified time based on duration since current time
dbg!(file.formatted_size()); // Get the size of the file in human formatted size
dbg!(file.file_format()); // Get the format of the file eg (PDF)
}
})
The code is licensed under APACHE-2.0
All contributions must obey the rules in the Rust Code of Conduct by the Rust Foundation