【问题标题】:Check if Uri points to a file or directory检查 Uri 是否指向文件或目录
【发布时间】:2020-11-04 18:00:04
【问题描述】:

假设Uri存在,我们如何检查Android Uri(android.net.Uri)对象是否指向文件或目录?

谢谢。

【问题讨论】:

    标签: android uri


    【解决方案1】:

    您可以解析 URI 并识别它是否是文件。

    val pointToFile = uri.scheme == "file"
    

    【讨论】:

    • Uri 方案不是指向文件的来源吗(例如 content://、http://)?文件和目录的方案不一样吗?
    【解决方案2】:

    尝试为 uri 打开一个 InputStream。

    如果你成功了,它就是一个文件。

    不要忘记关闭流。

    您还可以使用内容解析器来查询 mime 类型。存在 mime 类型目录。

    【讨论】:

    • 这个方法可行,但是如果Uri是一个文件但是由于某种原因(例如安全权限)无法访问怎么办?输入流将无法创建。
    • 你对无法访问或使用的 uris 做了什么?
    • 我认为第二种方法更好。什么是目录的 MIME 类型?是“vnd.android.document/directory”吗?
    • 我只是想确保在无法访问文件时不会将文件检测为目录。
    • 是的,它看起来像一个目录 mime 类型。如果您进行一些查询,您很快就会对此毫无疑问。
    猜你喜欢
    • 1970-01-01
    • 2012-11-30
    • 2022-01-04
    • 2018-05-13
    • 2015-11-11
    • 1970-01-01
    • 2019-06-17
    • 2013-04-24
    • 2018-05-08
    相关资源
    最近更新 更多