How can I list files of a directory in Rust?

后端 未结 3 624
一整个雨季
一整个雨季 2021-02-04 23:21

How can I list all the files of a directory in Rust? I am looking for the equivalent of the following Python code.

files = os.listdir(\'./\')
相关标签:
3条回答
  • 2021-02-05 00:06

    Use std::fs::read_dir(). Here's an example:

    use std::fs;
    
    fn main() {
        let paths = fs::read_dir("./").unwrap();
    
        for path in paths {
            println!("Name: {}", path.unwrap().path().display())
        }
    }
    

    It will simply iterate over the files and print out their names.

    0 讨论(0)
  • 2021-02-05 00:07

    This can be done with glob. Try this on the playground:

    extern crate glob;
    use glob::glob;
    fn main() {
        for e in glob("../*").expect("Failed to read glob pattern") {
            println!("{}", e.unwrap().display());
        }
    }
    

    You may see the source.


    And for walking directories recursively, you can use the walkdir crate (Playground):

    extern crate walkdir;
    use walkdir::WalkDir;
    fn main() {
        for e in WalkDir::new(".").into_iter().filter_map(|e| e.ok()) {
            if e.metadata().unwrap().is_file() {
                println!("{}", e.path().display());
            }
        }
    }
    

    See also the Directory Traversal section of The Rust Cookbook.

    0 讨论(0)
  • 2021-02-05 00:16

    You could also use glob, which is expressly for this purpose.

    extern crate glob;
    use self::glob::glob;
    
    let files:Vec<Path> = glob("*").collect();
    
    0 讨论(0)
提交回复
热议问题