现在的位置: 首页 > 综合 > 正文

android读取assets下的文件及大小

2013年10月13日 ⁄ 综合 ⁄ 共 1150字 ⁄ 字号 评论关闭
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

  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)以下的文件.

抱歉!评论已关闭.