簡體   English   中英

Android 資產,如何從子文件夾中讀取文件?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM