From b9bf3b11cd61a01bcac873ff7ee3c8ebddcf01b9 Mon Sep 17 00:00:00 2001 From: Halil ibrahim Kalkan Date: Fri, 10 May 2019 21:42:58 +0300 Subject: [PATCH] Added extension methods for IFileInfo and Stream. --- .../System/IO/AbpStreamExtensions.cs | 13 ++++++++- .../FileProviders/AbpFileInfoExtensions.cs | 27 +++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.Core/System/IO/AbpStreamExtensions.cs b/framework/src/Volo.Abp.Core/System/IO/AbpStreamExtensions.cs index 88cf61b48e..e87ab67527 100644 --- a/framework/src/Volo.Abp.Core/System/IO/AbpStreamExtensions.cs +++ b/framework/src/Volo.Abp.Core/System/IO/AbpStreamExtensions.cs @@ -1,4 +1,6 @@ -namespace System.IO +using System.Threading.Tasks; + +namespace System.IO { public static class AbpStreamExtensions { @@ -10,5 +12,14 @@ return memoryStream.ToArray(); } } + + public static async Task GetAllBytesAsync(this Stream stream) + { + using (var memoryStream = new MemoryStream()) + { + await stream.CopyToAsync(memoryStream); + return memoryStream.ToArray(); + } + } } } diff --git a/framework/src/Volo.Abp.VirtualFileSystem/Microsoft/Extensions/FileProviders/AbpFileInfoExtensions.cs b/framework/src/Volo.Abp.VirtualFileSystem/Microsoft/Extensions/FileProviders/AbpFileInfoExtensions.cs index b6d60cd848..6217e82805 100644 --- a/framework/src/Volo.Abp.VirtualFileSystem/Microsoft/Extensions/FileProviders/AbpFileInfoExtensions.cs +++ b/framework/src/Volo.Abp.VirtualFileSystem/Microsoft/Extensions/FileProviders/AbpFileInfoExtensions.cs @@ -1,6 +1,7 @@ using JetBrains.Annotations; using System.IO; using System.Text; +using System.Threading.Tasks; using Volo.Abp; namespace Microsoft.Extensions.FileProviders @@ -30,5 +31,31 @@ namespace Microsoft.Extensions.FileProviders } } } + + /// + /// Reads file content as byte[]. + /// + public static byte[] ReadBytes([NotNull] this IFileInfo fileInfo) + { + Check.NotNull(fileInfo, nameof(fileInfo)); + + using (var stream = fileInfo.CreateReadStream()) + { + return stream.GetAllBytes(); + } + } + + /// + /// Reads file content as byte[]. + /// + public static async Task ReadBytesAsync([NotNull] this IFileInfo fileInfo) + { + Check.NotNull(fileInfo, nameof(fileInfo)); + + using (var stream = fileInfo.CreateReadStream()) + { + return await stream.GetAllBytesAsync(); + } + } } }