# System.IO.Enumeration ``` diff +namespace System.IO.Enumeration { + public ref struct FileSystemEntry { + public FileAttributes Attributes { get; } + public DateTimeOffset CreationTimeUtc { get; } + public ReadOnlySpan Directory { get; } + public ReadOnlySpan FileName { get; } + public bool IsDirectory { get; } + public bool IsHidden { get; } + public DateTimeOffset LastAccessTimeUtc { get; } + public DateTimeOffset LastWriteTimeUtc { get; } + public long Length { get; } + public ReadOnlySpan OriginalRootDirectory { get; } + public ReadOnlySpan RootDirectory { get; } + public FileSystemInfo ToFileSystemInfo(); + public string ToFullPath(); + public string ToSpecifiedFullPath(); + } + public class FileSystemEnumerable : IEnumerable, IEnumerable { + public FileSystemEnumerable(string directory, FileSystemEnumerable.FindTransform transform, EnumerationOptions options = null); + public FileSystemEnumerable.FindPredicate ShouldIncludePredicate { get; set; } + public FileSystemEnumerable.FindPredicate ShouldRecursePredicate { get; set; } + public IEnumerator GetEnumerator(); + IEnumerator System.Collections.IEnumerable.GetEnumerator(); + public delegate bool FindPredicate(ref FileSystemEntry entry); + public delegate TResult FindTransform(ref FileSystemEntry entry); + } + public abstract class FileSystemEnumerator : CriticalFinalizerObject, IDisposable, IEnumerator, IEnumerator { + public FileSystemEnumerator(string directory, EnumerationOptions options = null); + public TResult Current { get; } + object System.Collections.IEnumerator.Current { get; } + protected virtual bool ContinueOnError(int error); + public void Dispose(); + protected virtual void Dispose(bool disposing); + public bool MoveNext(); + protected virtual void OnDirectoryFinished(ReadOnlySpan directory); + public void Reset(); + protected virtual bool ShouldIncludeEntry(ref FileSystemEntry entry); + protected virtual bool ShouldRecurseIntoEntry(ref FileSystemEntry entry); + protected abstract TResult TransformEntry(ref FileSystemEntry entry); + } + public static class FileSystemName { + public static bool MatchesSimpleExpression(ReadOnlySpan expression, ReadOnlySpan name, bool ignoreCase = true); + public static bool MatchesWin32Expression(ReadOnlySpan expression, ReadOnlySpan name, bool ignoreCase = true); + public static string TranslateWin32Expression(string expression); + } +} ```