android - 检查 android raw 文件的 uri

标签 android file resources uri

我正在尝试以这种方式获取应用程序原始文件夹中文件的 URI:

Uri myUri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.myfile);

Uri myUri = Uri.parse("android.resource://mypackage/raw/myfile");

然后我使用这个方法来检查 uri 是否正确:

File f = new File(myUri.toString());
    if (f.exists()) {
        Log.d("YES", "file exist");
    }
    if (!f.exists()){
        Log.d("NO", "file doesn't exist");
    }

但我总是得到:“不,文件不存在”。

你知道为什么吗?

最佳答案

首先,因为没有文件。资源是您的开发人员计算机上的文件。它们不是设备上的文件。

第二,因为 new File(myUri.toString()) 永远不会工作。 Uri 总是有一个方案;文件系统路径从来没有方案。

第三,因为即使您使用 new File(myUri.getPath()),它最多也适用于 file:// Uri。还有许多其他类型的 Uri 方案;它们都不具有直接映射到文件系统路径的路径。即使使用 file:// Uri,文件系统路径也可能不是您可以直接访问的路径(例如,Android 4.4+ 上可移动媒体上的任意路径) .

关于android - 检查 android raw 文件的 uri,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32075295/

相关文章:

在 Windows 上提供 utf-8 文件功能的 php 库?

android - 什么是已弃用的 getSupportLoaderManager() 的适当替代品?

android - layout_width 和 layout_height 不适用于主题中的 edittext

android - Apache Legacy 的 Proguard 问题(不使用该库时)

android - 检测何时从 Android ListView 中删除 View

resources - 图结构的资源?

javascript - 使用 javascript 从文本文件中读取值

ruby - Ruby 中的文件打开模式

Java - getResource 在 csv 文件上失败

java - 这个资源是什么?为什么 Android 找不到它?