是否有任何库为人类可读的文件大小单位(如Duration)提供具有隐式转换(从 Int、Long、Float)的对象/类。
有了Duration你可以这样做:
11.millis
1.5.minutes
10.hours
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一些图书馆可以让我这样做:
1.gibabyte
1024.megabytes
10.gibibytes
10.GB
50.GiB
Run Code Online (Sandbox Code Playgroud)
我知道我可以自己实现这个,但我不想重新发明轮子。
Squants 是一个很好的解决方案,特别是如果您需要的不仅仅是来自 lib 的人类可读的字节大小转换,但另一种可能性是使用从旧的 SO java 解决方案移植的这个简单的 4 行解决方案。你今天可能不需要ZB 和 YB,但可能在未来 ;)
/**
* @see /sf/ask/228472471/
* @see https://en.wikipedia.org/wiki/Zettabyte
* @param fileSize Up to Exabytes
* @return
*/
def humanReadableByteSize(fileSize: Long): String = {
if(fileSize <= 0) return "0 B"
// kilo, Mega, Giga, Tera, Peta, Exa, Zetta, Yotta
val units: Array[String] = Array("B", "kB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB")
val digitGroup: Int = (Math.log10(fileSize)/Math.log10(1024)).toInt
f"${fileSize/Math.pow(1024, digitGroup)}%3.3f ${units(digitGroup)}"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2002 次 |
| 最近记录: |