Skip to content

Extend std::fs with extra functionality like total directory size and returning all files and errors instead of returning an error

License

Notifications You must be signed in to change notification settings

448-engineering/DirMeta

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FsMeta

crates.io DocsRust 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

About

Extend std::fs with extra functionality like total directory size and returning all files and errors instead of returning an error

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages