示例#1
0
        public static async Task <Stream> ReadPathAsync(this IDirectory dir, string relativePath, CancellationToken ct = default)
        {
            var lastSlashPos = relativePath.LastIndexOf('/');

            if (lastSlashPos < 0)
            {
                return(await dir.ReadAsync(relativePath, ct).ConfigureAwait(dir.TaskHelper));
            }
            var filename = relativePath.Substring(lastSlashPos + 1);
            var path     = relativePath.Substring(0, lastSlashPos);
            var fileDir  = await dir.CdAsync(path, ct).ConfigureAwait(dir.TaskHelper);

            if (fileDir == null)
            {
                return(null);
            }
            return(await fileDir.ReadAsync(filename, ct).ConfigureAwait(dir.TaskHelper));
        }