gpt4 book ai didi

Android Assets ,如何从子文件夹中读取文件?

转载 作者:行者123 更新时间:2023-11-29 00:54:25 29 4
gpt4 key购买 nike

下面的代码有效:它读取名为“file.txt”的文件,该文件位于 APK 的“assets”文件夹中,并将其存储在缓冲区中。到目前为止,还不错:

String u = "content://com.example.app/file.txt:assets"
ContentResolver r = controls.activity.getContentResolver();
InputStream in = r.openInputStream(Uri.parse(u));
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buffer = new byte[4096];
int n = in.read(buffer);
while (n >= 0) {
out.write(buffer, 0, n);
n = in.read(buffer);
}
in.close();
return out.toByteArray();

但是,如果我要读取的文件位于 Assets 的子文件夹中,例如子文件夹“sub”,我将这个 Uri 提供给上面的代码:

String u = "content://com.example.app/sub/file.txt:assets"

...那么在这种情况下我什么也得不到。该文件在那里,如 assets/sub/file.txt 但上面的代码返回一个空缓冲区。我所做的唯一更改是将“file.txt”替换为“sub/file.txt”,后者指向文件的存储位置。

我做错了什么?像这样手动创建uri字符串是错误的吗?我相信允许将文件存储在 Assets 子文件夹中......如果允许,我如何在 uri 字符串中指定路径?

请注意,我并不是要将文件的访问权限授予其他应用程序,我只是想从我自己的 APK Assets 中读取我自己的文件并将其放入缓冲区供内部使用。

非常感谢任何帮助!

最佳答案

使用 AssetManagerits open() method .所以,你会替换:

ContentResolver r = controls.activity.getContentResolver();
InputStream in = r.openInputStream(Uri.parse(u));

与:

AssetManager assets = controls.activity.getAssets();
InputStream in = assets.open("sub/file.txt");

关于Android Assets ,如何从子文件夹中读取文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55960973/

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