Размеры файлов анализа в KB, MB, GB и т. д. В C#
Пример
Следующий 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-килобайтный килобайт, чтобы заставить вас думать, что вы получаете больше дискового накопителя, чем вы на самом деле.