如何在 android 中获取临时文件的文件大小?

新手上路,请多包涵

如果我使用 openFileOutput() 创建和写入临时文件,我如何在完成写入后获取文件大小?

原文由 alexl 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 602
2 个回答

我希望这可以帮助你:

     File file = new File(selectedPath);
    int file_size = Integer.parseInt(String.valueOf(file.length()/1024));

其中字符串 selectedPath 是您要确定其文件大小的文件的路径。

file.length() 返回文件的字节长度,如 Java 7 文档 中所述:

返回此抽象路径名表示的文件的长度(以字节为单位),如果文件不存在则返回 0L。对于表示系统相关实体(例如设备或管道)的路径名,某些操作系统可能会返回 0L。

除以 1024 会将大小从字节转换为千比字节。 kibibytes = 1024 字节。

原文由 Akash Singh 发布,翻译遵循 CC BY-SA 4.0 许可协议

Kotlin 扩展解决方案

将这些添加到某处,然后调用 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

如果您需要来自字符串或 Uri 的文件,请尝试添加这些

fun Uri.asFile(): File = File(toString())

fun String?.asUri(): Uri? {
    try {
        return Uri.parse(this)
    } catch (e: Exception) {
    }
    return null
}

如果您想轻松地将值显示为字符串,这些是简单的包装器。随意自定义显示的默认小数

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"

原文由 Gibolt 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题