Существует ли перечисление Java для файловых модулей, эквивалентное java.util.concurrent.TimeUnit? - PullRequest
32 голосов
/ 14 декабря 2011

Мне всегда нравилась читаемость назначений, которые использовали TimeUnit, например, так:

long timePeriodInMillis = TimeUnit.MINUTES.toMillis( 53 );

За что-то вроде:

long timePeriodInMillis = 53 * 60 * 1000;

Есть ли эквивалентное перечисление, которое я могу использовать для размера файлаединицы?Что-то вроде

long maxBits = FilesizeUnit.MEGABYTES.toBits( 11 );

Ответы [ 4 ]

12 голосов
/ 14 декабря 2011

Я делал это точно так же, как это полгода назад, просто для удовольствия, вдохновленного перечислением TimeUnit.

Я выложу его на GitHub завтра. Он содержит два перечисления: BitUnit и ByteUnit. Оба также поддерживают конвертацию между собой. ByteUnit поддерживает 2-префиксные префиксы, а также 10-префиксы. (Константы и методы перечисления в ByteUnit используют терминологию IEC 80000-13 для префиксов.)

Использование выглядит следующим образом:

System.out.println(BitUnit.KBIT.toKiB(16000));

System.out.println(ByteUnit.GIB.toMB(1));
System.out.println(ByteUnit.GIB.toMiB(1));
System.out.println(ByteUnit.GB.toMB(1));
System.out.println(ByteUnit.GB.toMiB(1));

... и распечатывает:

1953.125

1073.741824
1024.0
1000.0
953.67431640625

Для методов преобразования между битами и байтами вы перегрузили методы, чтобы указать размер слова, отличный от 8 бит на байт. Надеюсь, вы можете подождать до завтра.


EDIT

Вот вы: https://github.com/fabian-barney/Utils

Не вините меня за структуру каталогов - я еще не знаком с Git. :)

6 голосов
/ 05 июля 2018

Общие Apache предоставляет константы в классе FileUtils, например

  • FileUtils.ONE_MB
  • FileUtils.ONE_GB
  • ...

источник: https://commons.apache.org/proper/commons-io/javadocs/api-2.2/org/apache/commons/io/FileUtils.html

Их определение КБ основано на 1024 байтах (МБ - это КБ2 и так далее).

0 голосов
/ 14 декабря 2011

Глядя на документацию по Java для интерфейса Comparable, который реализует TimeUnit, такой вещи не существует. Смотрите здесь: http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Comparable.html

Однако, с помощью этой ссылки вам будет несложно найти собственную рабочую версию для использования в вашем проекте (ах).

0 голосов
/ 14 декабря 2011

Нет, но вы можете легко конвертировать себя с помощью:

long maxBits = 11L * 1024 * 1024 * 8;

или

long maxBits = 11L * 1000 * 1000 * 8;

в зависимости от вашего определения мегабайт .

...