Я пытаюсь получить каждую папку, подпапки и файлы в объект из пути.
В этом пути будет много папок верхнего уровня со многими подпапками и файлами.
Мне нужно обрабатывать каждую верхнюю папку, ее подпапки и файлы отдельно.
example
C: \ Temp \ Folder1 \ подпапка \ подтекстов
C: \ temp \ Folder2 \ SubFiles \ SubFolders \ SubFiles
Необходимо обработать Folder1 с его подкаталогами и заключить его в объект. и то же самое для папки 2.
Вот некоторый код, доступ к которому запрещен, потому что поток остается открытым, и если я заверну поток в использование, он будет закрыт, прежде чем я смогу обработать информацию.
private static IEnumerable<LocalFile> GetLocalFile(string source)
{
return Directory.GetDirectories(source)
.SelectMany(m =>
{
return Directory.EnumerateFileSystemEntries(m, "*", SearchOption.AllDirectories)
.Select(x =>
{
var relative = x.Substring(source.Length + 1);
var localFile = new LocalFile(relative,
() =>
{
return File.OpenRead(x);
});
return localFile;
});
});
}
public sealed class LocalFile
{
private readonly Func<Task<Stream>> openLocal;
public LocalFile(string relativePath, Func<Stream> openLocal)
{
if (openLocal == null)
{
throw new ArgumentNullException(nameof(openLocal));
}
this.RelativePath = relativePath ?? throw new ArgumentNullException(nameof(relativePath));
this.openLocal = () => Task.FromResult(openLocal());
}
public LocalFile(string relativePath, Func<Task<Stream>> openLocal)
{
this.RelativePath = relativePath ?? throw new ArgumentNullException(nameof(relativePath));
this.openLocal = openLocal ?? throw new ArgumentNullException(nameof(openLocal));
}
public string RelativePath { get; }
public Task<Stream> OpenLocal() => this.openLocal();
}
Спасибо