/// <summary> /// 构造一个 <see cref="FileSizeDescriptor"/>。 /// </summary> /// <param name="description">给定的描述。</param> /// <param name="name">给定的名称。</param> /// <param name="abbrName">给定的简称。</param> /// <param name="system">给定的进制。</param> /// <param name="size">给定的进制大小。</param> public FileSizeDescriptor(string description, string name, string abbrName, FileSizeSystem system, BigInteger size) { Description = description; Name = name; AbbrName = abbrName; System = system; Size = size; }
/// <summary> /// 构造一个 <see cref="FileSizeDescriptionAttribute"/>。 /// </summary> /// <param name="description">给定的描述(如:千字节)。</param> /// <param name="name">给定的名称(如:KibiByte/KiloByte)。</param> /// <param name="abbrName">给定的简称(如:KiB/KB)。</param> /// <param name="system">给定的进制(如:二进制/十进制)。</param> /// <param name="exponent">给定的进制大小指数(用于幂运算)。</param> public FileSizeDescriptionAttribute(string description, string name, string abbrName, FileSizeSystem system, int exponent) { Description = description; Name = name; AbbrName = abbrName; System = system; BaseNumber = (int)system; Exponent = exponent; }
/// <summary> /// 将文件大小格式化为带自适应单位的字符串。 /// </summary> /// <param name="fileSize">给定的文件大小。</param> /// <param name="system">给定的 <see cref="FileSizeSystem"/>。</param> /// <returns>返回格式化字符串。</returns> public static string FormatSizeStringWithAdaptionUnit(this BigInteger fileSize, FileSizeSystem system) { foreach (var descr in _reverseUnitDescriptors.Where(p => p.System == system)) { if (fileSize >= descr.Size) { return(descr.FormatSizeString(fileSize)); } } return(fileSize.ToString()); }
/// <summary> /// 将文件大小格式化为带单位的字符串。 /// </summary> /// <param name="fileSize">给定的文件大小。</param> /// <param name="system">给定的 <see cref="FileSizeSystem"/>。</param> /// <param name="unit">给定的 <see cref="FileSizeUnit"/>。</param> /// <returns>返回格式化字符串。</returns> public static string FormatSizeStringWithUnit(this BigInteger fileSize, FileSizeSystem system, FileSizeUnit unit) { if (UnitDescriptors.TryGetValue(unit, out var descriptions)) { var descr = descriptions.FirstOrDefault(s => s.System == system); if (descr is null) { throw new ArgumentException($"Unsupported file size system '{system}'."); } return(descr.FormatSizeString(fileSize)); } return(fileSize.ToString()); }
/// <summary> /// 将文件大小格式化为带单位的字符串。 /// </summary> /// <param name="fileSize">给定的文件大小。</param> /// <param name="system">给定的 <see cref="FileSizeSystem"/>。</param> /// <param name="unit">给定的 <see cref="FileSizeUnit"/>。</param> /// <returns>返回格式化字符串。</returns> public static string FormatSizeStringWithUnit(this long fileSize, FileSizeSystem system, FileSizeUnit unit) => new BigInteger(fileSize).FormatSizeStringWithUnit(system, unit);
/// <summary> /// 将文件大小格式化为带自适应单位的字符串。 /// </summary> /// <param name="fileSize">给定的文件大小。</param> /// <param name="system">给定的 <see cref="FileSizeSystem"/>。</param> /// <returns>返回格式化字符串。</returns> public static string FormatSizeStringWithAdaptionUnit(this long fileSize, FileSizeSystem system) => new BigInteger(fileSize).FormatSizeStringWithAdaptionUnit(system);