8 unstable releases (3 breaking)
0.5.3 | Jan 4, 2024 |
---|---|
0.5.2 | Dec 30, 2023 |
0.4.1 | Dec 14, 2023 |
0.3.1 | Nov 22, 2023 |
0.2.0 | Nov 22, 2023 |
#1250 in Filesystem
32KB
477 lines
FsMeta
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)
Examples
[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)
}
})
LICENSE
The code is licensed under APACHE-2.0
Code of Conduct
All contributions must obey the rules in the Rust Code of Conduct by the Rust Foundation
Dependencies
~4–13MB
~169K SLoC