【问题标题】:How to get File length of an image Uri如何获取图像 Uri 的文件长度
【发布时间】:2020-02-04 14:31:34
【问题描述】:

我有一个图像 Uri 文件,我需要检查该文件是否大于 1mb。 这是我尝试过的一部分:

val uriFile  = selectedPhotoUri!!.toFile()
uriFileLength = (uriFile.length().div(1024))

应用程序崩溃

我也试过了:

val uriFile :File = File(selectedPhotoUri.toString())
uriFileLength = (uriFile1.length().div(1024))

uriFileLength 总是返回 0 我也在使用 Kotlin,我在这个论坛上搜索过,但只找到了 java 代码。 提前致谢。

【问题讨论】:

标签: android kotlin


【解决方案1】:

你应该投你的 .length() 。或 1024floatdouble,否则操作将返回一个整数,如果文件大小小于 1024,则返回 0。

例如:

整数

256 / 1024 = 0

双倍或浮动

256 / 1024 = 0.25

所以你可以有类似的东西:

fun File.getFileSizeFloat(): Float {
    return this.length().toFloat().div(1024)
}

fun File.getFileSizeDouble(): Double {
    return this.length().toDouble().div(1024)
}

// call to get file size
uriFile.getFileSizeDouble()

// or
uriFile.getFileSizeFloat()

【讨论】:

  • 我试过你的方法,但它现在仍然返回 0.0,我没有反对。
  • 如果它仍然返回 0,那么你的 URI 无效。如果你尝试uriFile.exists(),它会返回true吗?
  • 试过 uriFile.exists() 返回 false,我认为我的问题是我的 uri 文件无法使用 File() 或 .toFile() 转换为文件,建议的答案也在java不能在kotlin中使用?如果我错了,请纠正我,我不久前开始学习 kotlin。谢谢
  • @nickisra 答案在 Kotlin 中,它们是仅在 Kotlin 中可用的扩展函数。你如何得到你的URI?我会建议使用 path 创建 File 对象,从那里我的回答应该足够了。查看如何从 URI 中获取路径:stackoverflow.com/a/7726604/3330058
  • 感谢您的帮助,我在 1 分钟前通过使用 documentFile 依赖解决了问题
猜你喜欢
  • 2019-12-07
  • 1970-01-01
  • 1970-01-01
  • 2011-10-12
  • 1970-01-01
  • 2014-07-15
  • 2016-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多