В моем проекте есть средство поиска каталогов, для получения одной папки по шаблону требуется путь и шаблон.
Например:
Каталог C:/, поэтому шаблон будет C:/* (*)
Первый каталог, возвращенный методом, будет C:/First
Если я снова вызову этот метод с путем, будет возвращена новая папка, например C:/Second, и если я получу все каталоги, которые смогу, DirectorySearcher запустится с самого начала, но этого не произойдет.
Источник: https://github.com/TheMakarik/solid-zip ... earcher.cs
Исходный код:
P.S RootDirectory это просто поддельный каталог (sz/), содержимое которого должно возвращать логические диски (а в моей реализации проводника - несколько дополнительных папок)
В моем проекте есть средство поиска каталогов, для получения одной папки по шаблону требуется [b]путь[/b] и [b]шаблон[/b]. Например: Каталог C:/, поэтому шаблон будет C:/* (*) Первый каталог, возвращенный методом, будет C:/First Если я снова вызову этот метод с путем, будет возвращена новая папка, например C:/Second, и если я получу все каталоги, которые смогу, DirectorySearcher запустится с самого начала, но этого не произойдет. Источник: https://github.com/TheMakarik/solid-zip/blob/main/src/SolidZip.Services/ExplorerServices/DirectorySearcher.cs Исходный код: P.S RootDirectory это просто поддельный каталог (sz/), содержимое которого должно возвращать логические диски (а в моей реализации проводника - несколько дополнительных папок) [code]namespace SolidZip.Services.ExplorerServices;
internal sealed class DirectorySearcher( ILogger logger, IDirectoryProxy directory, IOptions explorerOptions) : IDirectorySearcher { private const string FoundDirectoryLogMessage = "Found directory {Path} for the {Directory} by pattern {Pattern}"; private const string SearchingInRootDirectoryLogMessage = "Searching in root directory with pattern: {Pattern}"; private const string PatternNotFoundLogMessage = "Pattern not found in directory: {Directory}, pattern: {Pattern}"; private const string PatternStartsWithDirectoryLogMessage = "Pattern starts with directory, trimming pattern. Original: {OriginalPattern}, Trimmed: {TrimmedPattern}"; private const string ClearingFoundDirectories = "Clearing '_alreadyFoundDirectoreis', every directory may will be shown again, content before: {content}"; private const string DirectorySearcherState = "DirectorySearcherState: AlreadyFoundDirectoreis: {directoreis}, LastPath: {path}, CurrentPath: {currentPath}";
logger.LogWarning(PatternNotFoundLogMessage, path, pattern); throw new DirectoryNotFoundException($"Directory not found in root for path: {path}, pattern: {pattern}"); }
private FileEntity GetFirstRootDirectory() { var firstDrive = directory.GetLogicalDrives().First(); logger.LogDebug(FoundDirectoryLogMessage, firstDrive, explorerOptions.Value.RootDirectory, "root"); return new FileEntity(firstDrive, IsDirectory: true); }