Joe*_*erg 35 java time enums filesize
我一直很喜欢使用TimeUnit的作业的可读性,如下所示:
long timePeriodInMillis = TimeUnit.MINUTES.toMillis( 53 );
Run Code Online (Sandbox Code Playgroud)
比如:
long timePeriodInMillis = 53 * 60 * 1000;
Run Code Online (Sandbox Code Playgroud)
是否有可用于文件大小单元的等效枚举?就像是
long maxBits = FilesizeUnit.MEGABYTES.toBits( 11 );
Run Code Online (Sandbox Code Playgroud)
Fab*_*ney 12
半年前我完成了这样的事情,只是为了获得TimeUnit enum的灵感.
我明天会在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));
Run Code Online (Sandbox Code Playgroud)
...并打印出来:
1953.125
1073.741824
1024.0
1000.0
953.67431640625
Run Code Online (Sandbox Code Playgroud)
对于Bits和Bytes之间的转换方法,您已经重载方法以指定除每字节8位之外的字大小.希望你能等到明天.
编辑
您的位置是:https://github.com/fabian-barney/Utils
不要责怪我的目录结构 - 我还不熟悉Git.:)
Apache commons在FileUtils类中提供常量,例如
FileUtils.ONE_MBFileUtils.ONE_GB来源:https : //commons.apache.org/proper/commons-io/javadocs/api-2.2/org/apache/commons/io/FileUtils.html
他们对KB的定义基于1024字节(MB为KB²,如此长)。
小智 6
如果您使用 Spring,则已经有一个用于数据单位转换的实用程序类:org.springframework.util.unit.DataSize。此类以字节为单位建模数据大小,并且是不可变的且线程安全的。
使用示例:
Long bytesIn5Mb = DataSize.ofMegabytes(5).toBytes(); // 5MB to bytes
Long kbIn1Tb = DataSize.ofTerabytes(1).toKilobytes(); // 1TB to KB
Run Code Online (Sandbox Code Playgroud)