Example #1
0
        public static async Task CopyToAsync(
            this IStorageRecord record,
            Stream destination,
            int?bufferSize     = null,
            IProgress progress = null,
            CancellationToken cancellationToken = default(CancellationToken))
        {
            if (record.GetStorageProvider().Features.TryGetFeature(out IRecordCopyFeature implementation))
            {
                await implementation.CopyToAsync(record, destination, bufferSize, progress, cancellationToken);
            }
            else
            {
                using (var buffer = await record.CreateReadableStreamAsync(cancellationToken))
                {
                    await buffer.CopyToAsync(destination, bufferSize ?? 8192, progress, cancellationToken);

                    await destination.FlushAsync();
                }
            }
        }