Размеры файлов анализа в KB, MB, GB и т. д. В C#
Пример показывает, как преобразовать число в строку, отформатированную в КБ, МБ и т. д. Этот пример делает обратное: он анализирует значение, такое как «1.23 TB "и возвращает число.
Следующий ParseFileSize метод выполняет всю интересную работу.
// Разбираем размер файла.
private string[] SizeSuffixes =
{ "bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB" };
private double ParseFileSize(string value, int kb_value)
{
// Удалите передние и конечные пробелы.
value = value.Trim();
try
{
// Найдите последний неалфавитный символ.
int ext_start = 0;
for (int i = value.Length - 1; i >= 0; i--)
{
// Остановимся, если найдем что-то другое, кроме буквы.
if (!char.IsLetter(value, i))
{
ext_start = i + 1;
break;
}
}
// Получить числовую часть.
double number = double.Parse(value.Substring(0, ext_start));
// Получить расширение.
string suffix;
if (ext_start < value.Length)
{
suffix = value.Substring(ext_start).Trim().ToUpper();
if (suffix == "BYTES") suffix = "bytes";
}
else
{
suffix = "bytes";
}
// Найти расширение в списке.
int suffix_index = -1;
for (int i = 0; i < SizeSuffixes.Length; i++)
{
if (SizeSuffixes[i] == suffix)
{
suffix_index = i;
break;
}
}
if (suffix_index < 0)
throw new FormatException(
"Unknown file size extension " + suffix + ".");
// Вернуть результат.
return Math.Round(number * Math.Pow(kb_value, suffix_index));
}
catch (Exception ex)
{
throw new FormatException("Invalid file size format", ex);
}
}
В массиве SizeSuffixes хранятся суффиксы, такие как КБ и ГБ, которые представляют значение 1024 в размере файла.
Метод ParseFileSize начинается с поиска последнего неалфавитного символа в строке и разделения цифрового начала строки из алфавитного суффикса в конце.
Затем метод использует double.Parse для разбора числовой части.
Затем он находит индекс суффикса в списке суффиксов и использует Math.Pow для повышения значения kb_value до степени индекса.
Параметр kb_value должен быть 1000 или 1024 в зависимости от того, хочет ли программа проанализировать значение с 1000 байтами килобайт или 1024 байта килобайта. Производители дисков обычно используют 1000-килобайтный килобайт, чтобы заставить вас думать, что вы получаете больше дискового накопителя, чем вы на самом деле.
