public static string ToUnitString(FileSizeMode mode, FileSizeUnit unit)
        {
            if (mode == FileSizeMode.Binary && unit != FileSizeUnit.Bytes)
            {
                var str   = unit.ToString();
                var index = str.IndexOf('B');
                return(str.Insert(index, "i"));
            }
            else if (mode == FileSizeMode.SI)
            {
                return(unit.ToString());
            }

            return(unit.ToString());
        }
예제 #2
0
        /// <summary>
        /// 获取文件大小
        /// </summary>
        /// <param name="length">长度:字节</param>
        /// <param name="unit">单位,枚举:FileSizeUnit</param>
        /// <returns></returns>
        public static string GetFileSize(decimal length, FileSizeUnit unit = FileSizeUnit.KB)
        {
            decimal num = 0m;

            switch (unit)
            {
            case FileSizeUnit.TB:
                num = Math.Round((decimal)(length / (1024m * 1024m * 1024m * 1024m)), 2, MidpointRounding.AwayFromZero);
                break;

            case FileSizeUnit.GB:
                num = Math.Round((decimal)(length / (1024m * 1024m * 1024m)), 2, MidpointRounding.AwayFromZero);
                break;

            case FileSizeUnit.MB:
                num = Math.Round((decimal)(length / (1024m * 1024m)), 2, MidpointRounding.AwayFromZero);
                break;

            case FileSizeUnit.KB:
            default:
                num = Math.Round((decimal)(length / 1024m), 2, MidpointRounding.AwayFromZero);
                break;
            }

            return(num.ToString() + unit.ToString());
        }
        /// <summary>Converts a file-size in the give unit to a different unit.</summary>
        /// <param name="sourceUnit">The source unit the 'value' is currently in.</param>
        /// <param name="targetUnit">The unit to convert to.</param>
        /// <param name="value">The file-size value to convert.</param>
        public static double ConvertTo(this FileSizeUnit sourceUnit, FileSizeUnit targetUnit, double value)
        {
            // Setup initial conditions.
            var bytes = sourceUnit.ToBytes(value);

            // Perform conversion.
            const int multiplier = 1024;
            if (targetUnit == FileSizeUnit.Byte) return bytes;
            if (targetUnit == FileSizeUnit.Kilobyte) return bytes / multiplier;
            if (targetUnit == FileSizeUnit.Megabyte) return bytes / multiplier / multiplier;
            if (targetUnit == FileSizeUnit.Gigabyte) return bytes / multiplier / multiplier / multiplier;
            if (targetUnit == FileSizeUnit.Terabyte) return bytes / multiplier / multiplier / multiplier / multiplier;

            throw new NotSupportedException(targetUnit.ToString());
        }
 public static string ToRQLString(this FileSizeUnit unit)
 {
     return(unit.ToString());
 }
예제 #5
0
 /// <summary>
 /// 将B单位转换为1024内的长度
 /// </summary>
 /// <param name="fileSizeForBytes">文件字节长度</param>
 /// <param name="fileSizeUnit">单位类型</param>
 /// <returns></returns>
 public static string ChangeFileSizeUnit(this long fileSizeForBytes, FileSizeUnit fileSizeUnit)
 {
     return($"{(fileSizeForBytes >> (int)fileSizeUnit)}{fileSizeUnit.ToString()}");
 }