¿Hay una enumeración de Java para unidades de tamaño de archivo que sea equivalente a java.util.concurrent.TimeUnit?
enums filesize (4)
Apache commons proporciona constantes en la clase FileUtils
, como
-
FileUtils.ONE_MB
-
FileUtils.ONE_GB
- ...
fuente: https://commons.apache.org/proper/commons-io/javadocs/api-2.2/org/apache/commons/io/FileUtils.html
Su definición de KB está basada en 1024 bytes, (MB es KB² y mucho tiempo).
Siempre me ha gustado la legibilidad de las tareas que usaron TimeUnit como esta:
long timePeriodInMillis = TimeUnit.MINUTES.toMillis( 53 );
Sobre algo como:
long timePeriodInMillis = 53 * 60 * 1000;
¿Existe una enumeración equivalente que pueda usar para unidades de tamaño de archivo? Algo como
long maxBits = FilesizeUnit.MEGABYTES.toBits( 11 );
En cuanto a la documentación de Java para la interfaz Comparable
que implementa TimeUnit
, no existe tal cosa. Vea aquí: http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Comparable.html
Sin embargo, con ese enlace no debería ser difícil derivar su propia versión de trabajo para usar dentro de su (s) proyecto (s).
He hecho exactamente algo así hace medio año atrás solo por diversión, inspirado por TimeUnit enum.
Lo subiré a GitHub mañana. Contiene dos enumeraciones: BitUnit
y ByteUnit
. Ambos también admiten la conversión entre ellos. ByteUnit tiene soporte para Prefijos basados en 2 así como para Prefijos basados en 10. (Las constantes y métodos de Enum en ByteUnit
usan la terminología IEC 80000-13 para los prefijos).
El uso se ve así:
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));
... e imprime:
1953.125
1073.741824
1024.0
1000.0
953.67431640625
Para los métodos de conversión entre Bits y Bytes, ha sobrecargado los métodos para especificar un tamaño de palabra distinto de 8 bits por byte. Espero que puedas esperar hasta mañana.
EDITAR
Aquí está: https://github.com/fabian-barney/Utils
No me culpen por la estructura del directorio. Todavía no estoy familiarizado con Git todavía. :)
No, pero puedes convertirte fácilmente con:
long maxBits = 11L * 1024 * 1024 * 8;
o
long maxBits = 11L * 1000 * 1000 * 8;
dependiendo de tu definición de megabyte .