using Admin.Core.Common.Extensions;
namespace Admin.Core.Common.Files
{
///
/// 文件大小
///
public struct FileSize
{
///
/// 初始化文件大小
///
/// 文件大小
/// 文件大小单位
public FileSize(long size, FileSizeUnit unit = FileSizeUnit.Byte)
{
switch (unit)
{
case FileSizeUnit.K:
Size = size * 1024; break;
case FileSizeUnit.M:
Size = size * 1024 * 1024; break;
case FileSizeUnit.G:
Size = size * 1024 * 1024 * 1024; break;
default:
Size = size; break;
}
}
///
/// 文件字节长度
///
public long Size { get; }
///
/// 获取文件大小,单位:字节
///
public long GetSize()
{
return Size;
}
///
/// 获取文件大小,单位:K
///
public double GetSizeByK()
{
return (Size / 1024.0).ToDouble(2);
}
///
/// 获取文件大小,单位:M
///
public double GetSizeByM()
{
return (Size / 1024.0 / 1024.0).ToDouble(2);
}
///
/// 获取文件大小,单位:G
///
public double GetSizeByG()
{
return (Size / 1024.0 / 1024.0 / 1024.0).ToDouble(2);
}
///
/// 输出描述
///
public override string ToString()
{
if (Size >= 1024 * 1024 * 1024)
return $"{GetSizeByG()} {FileSizeUnit.G.ToDescription()}";
if (Size >= 1024 * 1024)
return $"{GetSizeByM()} {FileSizeUnit.M.ToDescription()}";
if (Size >= 1024)
return $"{GetSizeByK()} {FileSizeUnit.K.ToDescription()}";
return $"{Size} {FileSizeUnit.Byte.ToDescription()}";
}
}
}