Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何获取图像Uri的文件长度_Android_Kotlin - Fatal编程技术网

Android 如何获取图像Uri的文件长度

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

我有一个图像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代码。
提前谢谢

您应该强制转换
.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解决了这个问题