Android 如何获取图像Uri的文件长度
我有一个图像Uri文件,我需要检查该文件是否大于1mb。 以下是我尝试的一部分:Android 如何获取图像Uri的文件长度,android,kotlin,Android,Kotlin,我有一个图像Uri文件,我需要检查该文件是否大于1mb。 以下是我尝试的一部分: val uriFile = selectedPhotoUri!!.toFile() uriFileLength = (uriFile.length().div(1024)) 应用程序崩溃 我也试过: val uriFile :File = File(selectedPhotoUri.toString()) uriFileLength = (uriFile1.length().div(1024)) uriFil
val uriFile = selectedPhotoUri!!.toFile()
uriFileLength = (uriFile.length().div(1024))
应用程序崩溃
我也试过:
val uriFile :File = File(selectedPhotoUri.toString())
uriFileLength = (uriFile1.length().div(1024))
uriFileLength
始终返回为0
我也在使用Kotlin,我在这个论坛上搜索过,但只找到了java代码。
提前谢谢 您应该强制转换
.length()
。或者将1024
转换为浮点或双精度,否则该操作将返回一个整数,如果文件大小小于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()
567.div(1024)是0;-)。您必须使用您获得的uri查询()getContentResolver()。我尝试了您的方法,但它仍然返回0.0。顺便说一句,我没有进行向下投票。如果它仍然返回0,则您的uri无效。如果您尝试
uriFile.exists()
,它是否返回true
?尝试过的uriFile.exists()返回false,我想我的问题是我的uri文件不能通过使用file()或.toFile()转换成文件,而且建议的答案是java,不能在kotlin中使用?如果我错了,请纠正我,我不久前开始学习kotlin。感谢you@nickisra答案在Kotlin中,它们是仅在Kotlin中可用的扩展函数。如何获取URI?我建议使用路径
创建文件对象,从那里我的答案就足够了。查看如何从URI获取路径:感谢您的帮助,我在1分钟前使用documentFile dependency解决了这个问题