[英]Android assets, how can I read a file from a subfolder?
下面的代碼有效:它讀取名為“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();
但是,如果我要讀取的文件位於資產的子文件夾中,例如子文件夾“sub”,並且我將此 Uri 提供給上述代碼:
String u = "content://com.example.app/sub/file.txt:assets"
......那么在這種情況下我什么也得不到。 該文件在那里,作為 assets/sub/file.txt 但上面的代碼返回一個空緩沖區。 我所做的唯一更改是用指向文件存儲位置的“sub/file.txt”替換“file.txt”。
我究竟做錯了什么? 像這樣手動創建uri字符串是錯誤的嗎? 我相信允許將文件存儲在資產子文件夾中...如果允許,我如何在 uri 字符串中指定路徑?
請注意,我並沒有試圖將文件訪問權限授予另一個應用程序,我只是想從我自己的 APK 資產中讀取我自己的文件並將其放入緩沖區以供內部使用。
任何幫助是極大的贊賞!
使用AssetManager
及其open()
方法。 所以,你會替換:
ContentResolver r = controls.activity.getContentResolver();
InputStream in = r.openInputStream(Uri.parse(u));
和:
AssetManager assets = controls.activity.getAssets();
InputStream in = assets.open("sub/file.txt");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.