private IEnumerable <string> GetRelativeFilePaths(DirectoryInfo dir) { foreach (var file in dir.EnumerateFiles()) { if ((file.Attributes & FileAttributes.Hidden) != 0 || file.Name[0] == '.') { continue; } var filePath = file.FullName; var relPath = filePath.Substring(_directory.FullName.Length); yield return(ResourcePath.FromRelativeSystemPath(relPath).ToRootedPath().ToString()); } foreach (var subDir in dir.EnumerateDirectories()) { if (((subDir.Attributes & FileAttributes.Hidden) != 0) || subDir.Name[0] == '.') { continue; } foreach (var relPath in GetRelativeFilePaths(subDir)) { yield return(relPath); } } }
/// <inheritdoc /> public IEnumerable <ResourcePath> FindFiles(ResourcePath path) { var fullPath = GetPath(path); if (!Directory.Exists(fullPath)) { yield break; } var paths = PathHelpers.GetFiles(fullPath); // GetFiles returns full paths, we want them relative to root foreach (var filePath in paths) { var relpath = filePath.Substring(_directory.FullName.Length); yield return(ResourcePath.FromRelativeSystemPath(relpath)); } }