Squants是一個很好的解決方案,尤其是如果您需要的不僅僅是lib中可讀的字節大小,還有另一種可能性,就是使用從old SO java solution移植過來的簡單4線解決方案。您可能不需要在今天ZB and YB,但也許在未來;)
/**
* @see https://stackoverflow.com/questions/3263892/format-file-size-as-mb-gb-etc
* @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)}"
}
你可以嘗試微博的Util:https://github.com/twitter/util#space – Eric
@Eric這是非常好的alternavie!我正在使用twitter utils,並不知道他們有這個。不幸的是,他們使用千兆字節作爲1204兆字節(基數2)。既然現在我們有技嘉和Gibibyte(基數10和基數2),我想避免含糊不清。 –