Is there a Java enum for filesize units that's equivalent to java.util.concurrent.TimeUnit?

Apache commons provides constants in the FileUtils class, like

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

source : https://commons.apache.org/proper/commons-io/javadocs/api-2.2/org/apache/commons/io/FileUtils.html

Their definition of a KB is based on 1024 bytes, (a MB is KB², and so long).


I've done exactly sth like this half a year ago just for fun inspired by TimeUnit enum.

I will upload it at GitHub tomorrow. It contains two enums: BitUnit and ByteUnit. Both also support converting between each other. ByteUnit has support for 2-based Prefixes as well for 10-based Prefixes. (Enum constants and methods in ByteUnit use IEC 80000-13 terminology for the prefixes.)

Usage looks like this:

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));

... and prints out:

1953.125

1073.741824
1024.0
1000.0
953.67431640625

For convertion methods between Bits and Bytes you've overloaded methods to specify a word size other than 8 bits per byte. Hope you can wait until tomorrow.


EDIT

Here you are: https://github.com/fabian-barney/Utils

Do not blame me for the directory structure - I am still not familar with Git yet. :)