繁体   English   中英

无法访问原始文件夹中的文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM