Размеры файлов анализа в KB, MB, GB и т. д. В C#

Пример Формат файлов формата в КБ, МБ, ГБ и т. д. В 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-килобайтный килобайт, чтобы заставить вас думать, что вы получаете больше дискового накопителя, чем вы на самом деле.

Источник: http://csharphelper.com/blog/2017/03/parse-file-sizes-in-kb-mb-gb-and-so-forth-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector