file_system_globbing library

Provides support for matching file system paths using glob patterns with include/exclude semantics.

A port of Microsoft.Extensions.FileSystemGlobbing, supporting wildcards and directory recursion for flexible file selection.

Basic Glob Matching

Match files using glob patterns:

final matcher = Matcher()
  ..addInclude('**/*.dart')
  ..addExclude('**/*_test.dart');

final result = matcher.execute(DirectoryInfoWrapper(directory));

for (final file in result.files) {
  print(file.path);
}

Pattern Syntax

Supported glob pattern features:

  • exact names: one.txt, dir/two.txt
  • * - matches zero or more characters within a file or directory name, e.g. *.txt, readme.*, styles/*.css
  • ** - matches an arbitrary number of directory levels, e.g. **/*.cs, dir/**/*
  • .. - at the beginning of a pattern, refers to the parent directory
  • a trailing / treats the pattern as a directory, e.g. lib/ is equivalent to lib/**

In-Memory Matching

Test glob patterns against file paths without touching the disk:

final matcher = Matcher()..addInclude('*.dart');
final result = matcher.matchFiles(
  ['file1.dart', 'file2.txt'],
  '/root',
);

Classes

DirectoryInfoBase
Enumerates all files and directories in the directory.
DirectoryInfoWrapper
FileInfoBase
Represents a file
FileInfoWrapper
FilePatternMatch
Represents a file that was matched by searching using a globbing pattern
FileSystemInfoBase
Shared abstraction for files and directories
InMemoryDirectoryInfo
Represents an in-memory directory for pattern matching without accessing the file system.
InMemoryFileInfo
Represents an in-memory file for pattern matching.
Matcher
Searches the file system for files with names that match specified patterns.
PatternMatchingResult
Represents a collection of FilePatternMatch

Enums

StringComparison
Specifies how two strings are compared during pattern matching.

Extensions

MatcherExtensions on Matcher
Extension methods for Matcher to simplify common operations.

Functions

stringComparisonKey(String value, StringComparison comparisonType) String
Returns a canonical key for value under comparisonType, suitable for direct == comparison or use in hash-based collections.