我是Android开发的新手。我在test.txt
文件夹中有一个res\raw
文件。由于某种原因,我无法访问它。
这是我用来测试的代码。 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
作为参数的现有函数。
答案 0 :(得分:0)
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
)FileOutputStream
中)上打开getCacheDir()
InputStream
复制到OutputStream
Uri.fromFile()
为图书馆创建Uri
该函数还可能期望使用其他类型的Uri
。由于我们不知道这是什么功能,因此我们无法查看其文档(如果有的话)并告诉您它可能会或可能不会带来什么。