[英]Can't access file in the raw folder
我是Android开发的新手。 我在res\\raw
文件夹中有一个test.txt
文件。 由于某种原因,我无法访问它。
这是我用来测试的代码。 为什么file.exists()
返回false
?
final String path = "android.resource://" + getActivity().getPackageName() + "/raw/test.txt";
final Uri uri = Uri.parse(path);
final File file = new File(uri.getPath());
boolean exists = file.exists(); // Returns false.
顺便说一句,我需要获取文件的Uri
。 我需要它,以便能够使用接受Uri
作为参数的现有函数。
为什么file.exists()返回false?
首先,资源是开发机器上的文件。 它不是设备上的文件。
第二, getPath()
上Uri
只是返回的路径部分Uri
。 您的情况是/raw/test.txt
。 如果Uri
是您问题的https
URL,则路径为/questions/56090894/cant-access-file-in-the-raw-folder
。 这些都不是任何Android设备上的有效文件系统路径。 您不能采用半随机字符串,将它们传递给File
构造函数,并期望它们具有含义。
我需要获取文件的Uri
如果您确实要说“获取资源的Uri
”,欢迎尝试uri
。 android.resource
方案有点晦涩难懂,因此很有可能您使用的函数将不支持它。
在这种情况下,您将需要:
InputStream
getResources().openRawResource()
在Context
上的getResources().openRawResource()
) FileOutputStream
(例如,在getCacheDir()
) InputStream
复制到OutputStream
Uri.fromFile()
为该库创建一个Uri
该函数还可能期望其他类型的Uri
。 由于我们不知道它是什么功能,因此我们无法查看其文档(如果有的话)并告诉您它可能会或可能不会期望的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.