Skip to content

fightling/dir-iterator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dir-iterator

Iterator that recursively scans and filters files from a directory.

Usage

Installation

Start using this library by running the following command in your cargo project directory.

cargo add dir-iterator

Read a Directory Recursively

Read a directory by using DirIterator::build_from_path(path):

use dir_iterator::*;

fn main() {
    // read directory `src`
    DirIterator::build_from_path("src")
        // maybe maybe
        .expect("path not found")
        // print it out
        .for_each(|e| println!("{:?}", e.file_name()));
}

Read Current Directory Recursively

Read current directory by using DirIterator::build_current() is a little shorter because it will panic if current directory does not exist or can't be retrieved.

use dir_iterator::*;

fn main() {
    // build a new iterator starting in the current directory
    DirIterator::build_current()
        // print each file name
        .for_each(|e| println!("{:?}", e.file_name()));
}

You may use DirIterator::try_build_current() to get errors instead of panic.

Filter Result with Wildcards

Filter the result with wildcards by using exclude(wildcard) which generates a filter.

use dir_iterator::*;

fn main() {
    DirIterator::build_current()
        // filter all files which have extension `txt`
        .filter(exclude("*.txt"))
        .for_each(|e| println!("{:?}", e.file_name()));
}

Ignore Folders When Scanning

To prevent some directories from being scanned at all you ca use ignore(wildcard).

use dir_iterator::*;

fn main() {
    DirIterator::current()
        // ignore target directory
        .ignore("target")
        // ignore all hidden directories
        .ignore(".*")
        // build iterator
        .build()
        // exclude all hidden files
        .filter(exclude(".*"))
        .for_each(|e| println!("{:?}", e.path()));
}

Because ignore() parametrizes the following scan it must be placed in front of all Iterator trait methods and finished with build().

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages