16 февраля 2010 г.

[UniversIS.Components] BinarySize

Раз наблюдается интерес к BinarySize – чуть-чуть документации.

BinarySize – структура, хранящая размер в байтах и позваляющая получить отдельные составляющие (Bytes, Kilobytes etc), размер в байтах/килобайтах (TotalBytes, TotalKilobytes etc), отформатировать размер в строку и, наоборот, распарсить размер из строки.

Размер в байтах хранится как long, отрицательные значения не допускаются.

ToString():

Принимает строку формата и IFormatProvider. Начиная с v3.0.0.2 поддерживается ICustomFromatter - форматируйте на здоровье;)

Поддерживаются следующие строки форматирования:

  • список форматов для размерностей в байтах/килобайтах и т.п., разделённый точкой с запятой (без пробелов). Используется максимально подходящая размерность (с v3.0.0.2 - последняя, если размерность binarySize больше максимальной заданной).
  • желаемая размерность – одним символом (B,K,M,G,T,P,E) или двумя (BB,KB,MB,GB,TB,PB,EB).
  • желаемая размерность;формат (см Custom Numeric Format Strings). Разделитель – ; (без пробелов).

Parse() и TryParse():

Принимают строку, содержащую размер, обязательно – IFormatProvider (используется для разбора численной части) и список суффиксов для каждой размерности (одной строкой (разделитель – ; без пробелов) или массивом). Parse более суров, и требует точного соответствия (с учётом регистра) суффикса (B/KB/MB etc) переданному значению. TryParse пытается прожевать всё.

Сампл:

Извиняюсь за поехавшее форматирование, никак не найду нормальный копипастер кода.

BinarySize bs = BinarySize(
  25 * BinarySize.Gigabyte
  + 55 * BinarySize.Megabyte
  + 122 * BinarySize.Kilobyte
  + 132);

Console.WriteLine(bs.ToString());
Console.WriteLine(bs.ToString("K"));
Console.WriteLine(bs.ToString("MB"));
Console.WriteLine(bs.ToString("#.# байт(а);#.# Kб;#.# Мб;#.# Гб"));
Console.WriteLine(bs.ToString("#.# байт(а);#,#.# Kб"));
Console.WriteLine(bs.ToString("M;#.# M"));

size = "1212121 Кб";

Console.WriteLine(BinarySize.Parse(
  size,
  CultureInfo.CurrentCulture,
  "байт(а);Кб"));

2 комментария:

  1. Круто! Спасибо. Доки как раз не хватало. О части воможностей даж по исходникам не догадаешься )

    ОтветитьУдалить
  2. Дык спрашивайте. Ёж птица ленивая, не пнёшь - не полетит.

    ОтветитьУдалить