gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 09:39:58 24 4
gpt4 key购买 nike

我是 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 作为参数的现有函数。

最佳答案

How come file.exists() returns false?

首先,资源是开发计算机上的文件。它不是设备上的文件。

其次,Uri 上的 getPath() 仅返回 Uri 的路径部分。就您而言,即 /raw/test.txt。如果 Uri 是您问题的 https URL,则路径将为 /questions/56090894/cant-access-file-in-the-raw-folder。这些都不是任何 Android 设备上的有效文件系统路径。您不能采用半随机字符串,将它们传递给 File 构造函数,并期望它们有意义。

I need to get the Uri of the file

如果您的意思确实是“获取资源的Uri”,欢迎您尝试您的uriandroid.resource 方案有点晦涩,因此您正在使用的函数很可能不支持它。

在这种情况下,您需要:

  • 在原始资源上打开一个 InputStream(Context 上的 getResources().openRawResource())
  • 在您控制的某个文件上打开一个 FileOutputStream(例如,在 getCacheDir() 中)
  • 将字节从InputStream复制到OutputStream
  • 尝试 Uri.fromFile() 为库创建 Uri

该函数也可能需要某种其他类型的 Uri。由于我们不知道这是什么功能,因此我们无法查看其文档(如果有的话)并告诉您它可能或可能不期望什么。

关于java - 无法访问原始文件夹中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56090894/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com