2017-09-06 27 views
0

我有APK的根二進制文件,我可以檢查:打開一個文件夾資產以外的assetManager

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

它存在於返回列表。但我怎麼打開它?
因爲當我嘗試通過使用此代碼來打開文件:

assets.open("/test.bin") 

我所面臨的FileNotFoundException異常。

+1

你應該把資產目錄中的文件。不是根,不管是什麼。 – greenapps

+0

@greenapps該文件最初在一個依賴項(外部jar)上,並且在編譯之後,它會出現在apk的根目錄下。 – paykoob

回答

0

最後,我solove使用的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; 
} 
相關問題