android讀取assets下的檔案及大小

來源:互聯網
上載者:User
1. 先在Activity裡面調用getAssets()來擷取AssetManager引用。2. 再用AssetManager的open(String fileName, int accessMode)方法則指定讀取的檔案以及訪問模式就能得到輸入資料流InputStream。       3. 然後就是用已經open file 的inputStream讀取檔案,讀取完成後記得inputStream.close()。4.調用AssetManager.close()關閉AssetManager。

       Android Asset Packaging Tool(aapt)使用這個工具可打包所有資料 Image XML檔案 任何資源檔.在產生APK時aapt選擇性的壓縮各種資源來節省裝置空間,aapt使用尾碼來決定哪個資源需要壓縮,aapt源碼定義一些不需要壓縮的檔案尾碼。附aapt源碼Package.cpp

view plainprint?
  1. /* these formats are already compressed, or don't compress well */  
  2. static const char* kNoCompressExt[] = {  
  3.     ".jpg", ".jpeg", ".png", ".gif",  
  4.     ".wav", ".mp2", ".mp3", ".ogg", ".aac",  
  5.     ".mpg", ".mpeg", ".mid", ".midi", ".smf", ".jet",  
  6.     ".rtttl", ".imy", ".xmf", ".mp4", ".m4a",  
  7.     ".m4v", ".3gp", ".3gpp", ".3g2", ".3gpp2",  
  8.     ".amr", ".awb", ".wma", ".wmv"  
  9.   
  10. }; 

       在Android 2.3以前的任何壓縮的資源的原始大小超過1M將不能從APK中讀出,如果你使用AssetManager 或 Resources classes方法來擷取InputStream,將拋出java.io.IOException的異常如下     DEBUG/asset(1123): Data exceeds UNCOMPRESS_DATA_MAX (20078432 vs 1048576);

      可以看到如果需要打包資料庫的童鞋檔案過大就需要注意了。

解決方案如下:

1.將你的資源檔尾碼改成上面列出的尾碼。
2.在命令列上使用-0參數來指定不需要壓縮的檔案尾碼。當你使用Eclipse內的ADT目前還不知道有什麼方法可以傳遞-0參數給aapt。
3.將你的資源檔分割成UNCOMPRESS_DATA_MAX(1M)以下的檔案.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.