mirror of https://github.com/abpframework/abp.git
csharpabpc-sharpframeworkblazoraspnet-coredotnet-coreaspnetcorearchitecturesaasdomain-driven-designangularmulti-tenancy
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
3.3 KiB
104 lines
3.3 KiB
using JetBrains.Annotations;
|
|
using System.IO;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using Volo.Abp;
|
|
using Volo.Abp.VirtualFileSystem;
|
|
using Volo.Abp.VirtualFileSystem.Embedded;
|
|
|
|
namespace Microsoft.Extensions.FileProviders
|
|
{
|
|
public static class AbpFileInfoExtensions
|
|
{
|
|
/// <summary>
|
|
/// Reads file content as string using <see cref="Encoding.UTF8"/> encoding.
|
|
/// </summary>
|
|
public static string ReadAsString([NotNull] this IFileInfo fileInfo)
|
|
{
|
|
return fileInfo.ReadAsString(Encoding.UTF8);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Reads file content as string using <see cref="Encoding.UTF8"/> encoding.
|
|
/// </summary>
|
|
public static Task<string> ReadAsStringAsync([NotNull] this IFileInfo fileInfo)
|
|
{
|
|
return fileInfo.ReadAsStringAsync(Encoding.UTF8);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Reads file content as string using the given <paramref name="encoding"/>.
|
|
/// </summary>
|
|
public static string ReadAsString([NotNull] this IFileInfo fileInfo, Encoding encoding)
|
|
{
|
|
Check.NotNull(fileInfo, nameof(fileInfo));
|
|
|
|
using (var stream = fileInfo.CreateReadStream())
|
|
{
|
|
using (var streamReader = new StreamReader(stream, encoding, true))
|
|
{
|
|
return streamReader.ReadToEnd();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Reads file content as string using the given <paramref name="encoding"/>.
|
|
/// </summary>
|
|
public static async Task<string> ReadAsStringAsync([NotNull] this IFileInfo fileInfo, Encoding encoding)
|
|
{
|
|
Check.NotNull(fileInfo, nameof(fileInfo));
|
|
|
|
using (var stream = fileInfo.CreateReadStream())
|
|
{
|
|
using (var streamReader = new StreamReader(stream, encoding, true))
|
|
{
|
|
return await streamReader.ReadToEndAsync();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Reads file content as byte[].
|
|
/// </summary>
|
|
public static byte[] ReadBytes([NotNull] this IFileInfo fileInfo)
|
|
{
|
|
Check.NotNull(fileInfo, nameof(fileInfo));
|
|
|
|
using (var stream = fileInfo.CreateReadStream())
|
|
{
|
|
return stream.GetAllBytes();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Reads file content as byte[].
|
|
/// </summary>
|
|
public static async Task<byte[]> ReadBytesAsync([NotNull] this IFileInfo fileInfo)
|
|
{
|
|
Check.NotNull(fileInfo, nameof(fileInfo));
|
|
|
|
using (var stream = fileInfo.CreateReadStream())
|
|
{
|
|
return await stream.GetAllBytesAsync();
|
|
}
|
|
}
|
|
|
|
public static string GetVirtualOrPhysicalPathOrNull([NotNull] this IFileInfo fileInfo)
|
|
{
|
|
Check.NotNull(fileInfo, nameof(fileInfo));
|
|
|
|
if (fileInfo is EmbeddedResourceFileInfo embeddedFileInfo)
|
|
{
|
|
return embeddedFileInfo.VirtualPath;
|
|
}
|
|
|
|
if (fileInfo is InMemoryFileInfo inMemoryFileInfo)
|
|
{
|
|
return inMemoryFileInfo.DynamicPath;
|
|
}
|
|
|
|
return fileInfo.PhysicalPath;
|
|
}
|
|
}
|
|
}
|
|
|