通过assetManager打开assets文件夹之外的文件

时间:2017-09-06 18:09:03

标签: android android-assetmanager

我在apk的根目录中有一个二进制文件,我可以通过以下方式查看:

AssetManager assets = Context().getResources().getAssets();
assets.list("/")

它存在于返回列表中。但我怎么能打开呢? 因为当我尝试使用此代码打开文件时:

assets.open("/test.bin")

我遇到了FileNotFoundException。

1 个答案:

答案 0 :(得分:1)

最后,我通过使用getClass()。getResourceAsStream()而不是assetManager来解决它:

public byte[] loadBinAsset(String name) {
    AssetManager assets = context.getResources().getAssets();
    InputStream stream = null;
    try {
        try {
            stream = assets.open(name);
        } catch (IOException e) {
            stream = context.getClass().getResourceAsStream("/" + name);
        }
        return readFully(stream);
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (stream != null) {
                stream.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return null;
}