Розширення Kotlin Solution
Перше, що вам слід зробити з файлом, - це підтвердити, що він існує:
val File?.exists get() = this?.exists() ?: false
Якщо вам потрібен файл із рядка або Uri, спробуйте додати їх, щоб зробити роботу з ними більш декларативною:
fun Uri.asFile(): File = File(toString())
fun String?.asUri(): Uri? {
try {
return Uri.parse(this)
} catch (e: Exception) {
}
return null
}
Щоб прочитати фактичний розмір файлу, додайте його кудись, а потім зателефонуйте myFile.sizeInMb
або що вам потрібно
val File.size get() = if (!exists()) 0.0 else length().toDouble()
val File.sizeInKb get() = size / 1024
val File.sizeInMb get() = sizeInKb / 1024
val File.sizeInGb get() = sizeInMb / 1024
val File.sizeInTb get() = sizeInGb / 1024
Якщо ви хочете легко відображати значення у вигляді рядка, це прості обгортки. Не соромтеся налаштовувати відображені десяткові крапки за замовчуванням
fun File.sizeStr(): String = size.toString()
fun File.sizeStrInKb(decimals: Int = 0): String = "%.${decimals}f".format(sizeInKb)
fun File.sizeStrInMb(decimals: Int = 0): String = "%.${decimals}f".format(sizeInMb)
fun File.sizeStrInGb(decimals: Int = 0): String = "%.${decimals}f".format(sizeInGb)
fun File.sizeStrWithBytes(): String = sizeStr() + "b"
fun File.sizeStrWithKb(decimals: Int = 0): String = sizeStrInKb(decimals) + "Kb"
fun File.sizeStrWithMb(decimals: Int = 0): String = sizeStrInMb(decimals) + "Mb"
fun File.sizeStrWithGb(decimals: Int = 0): String = sizeStrInGb(decimals) + "Gb"