我正在使用GET_CONTENT获得uri,并且在Glide中用于显示图像时也可以使用。但是我没有得到文件大小。它始终显示为0。
我尝试使用File(uri.path).length()
fun fileSize(uri: Uri){
var a = File(uri.path).length()
}
答案 0 :(得分:0)
Uri
不是文件。
添加DocumentFile
的依赖项,例如androidx.documentfile:documentfile
。然后,将代码替换为:
fun fileSize(uri: Uri){
var a = DocumentFile.fromSingleUri(uri).length()
}
答案 1 :(得分:0)
File
构造函数将文件系统路径名作为其参数。您给了它一个从URI提取的“路径”,它可能不是文件系统对象的路径名。 (可能是如果您使用的是file:
URL,但您没有检查架构,所以不能确定。)
如果您的File
对象具有不存在文件的路径名,那么当您调用File::length
时,文档指出length()
将返回零。
在Java世界中,您可以尝试以下操作:
URI uri = ...
File file = new File(uri);
long length = file.length();
但是,这仅在以下情况下有效:
URI
是具有file:
模式的绝对URI。(如果1.不为真,则出现异常。如果2.不为真,则结果为零。)
这也应该在Android平台上运行...无需添加任何额外的依赖项。