1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
package TLCockpit
object Utils {
/**
* @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.1f ${units(digitGroup)}"
}
}
|