版权声明:本文为博主原创文章,未经博主同意不得转载。

https://blog.csdn.net/zpf8861/article/details/34504183

 

res/raw和assets的同样点:

1.两者文件夹下的文件在打包后会原封不动的保存在apk包中。不会被编译成二进制。

res/raw和assets的不同点:
1.res/raw中的文件会被映射到R.java文件里。訪问的时候直接使用资源ID即R.id.filename;assets文件夹下的文件不会被映射到R.java中,訪问的时候须要AssetManager类。
2.res/raw不能够有文件夹结构,而assets则能够有文件夹结构。也就是assets文件夹下能够再建立文件夹

*读取文件资源:

1.读取res/raw下的文件资源,通过下面方式获取输入流来进行写操作

  • InputStream is = getResources().openRawResource(R.id.filename);
     

2.读取assets下的文件资源,通过下面方式获取输入流来进行写操作

  • AssetManager
    am = null;  
  • am = getAssets();  
  • InputStream
    is = am.open("filename");  
assets文件夹里面的文件都是保持原始的文件格式,须要用AssetManager以字节流的形式读取文件。
      1. 先在Activity里面调用getAssets() 来获取AssetManager引用。
      2. 再用AssetManager的open(String fileName, int accessMode) 方法则指定读取的文件以及訪问模式就能得到输入流InputStream。

 

      3. 然后就是用已经open file 的inputStream读取文件。读取完毕后记得inputStream.close() 。

      4.调用AssetManager.close() 关闭AssetManager。

须要注意的是。来自Resources和Assets 中的文件仅仅能够读取而不能进行写的操作
下面为Assets文件里读取:

public class ReadAsset extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState); setContentView(R.layout.read_asset); try {
InputStream is = getAssets().open("read_asset.txt");//文件夹下的一个二进制文件 int size = is.available(); // Read the entire asset into a local byte buffer.
byte[] buffer = new byte[size];
is.read(buffer);
is.close(); // Convert the buffer into a string.
String text = new String(buffer); // Finally stick the string into the text view.
TextView tv = (TextView)findViewById(R.id.text);
tv.setText(text);
} catch (IOException e) {
// Should never happen!
throw new RuntimeException(e);
}
}
}

下面为从Raw文件里读取:

 public String getFromRaw(){
try {
InputStreamReader inputReader = new InputStreamReader( getResources().openRawResource(R.raw.test1));
BufferedReader bufReader = new BufferedReader(inputReader);
String line="";
String Result="";
while((line = bufReader.readLine()) != null)
Result += line;
return Result;
} catch (Exception e) {
e.printStackTrace();
}
}

最新文章

  1. mysql-5.6.34 Installation from Source code
  2. mysql基础知识扫盲
  3. 实操UNITY3D接入91SDK安卓版
  4. Exception在方法继承中的限制
  5. Codeforces Round #366 (Div. 2) A
  6. ORACLE-树状数据结构获取各层级节点信息
  7. pflua:用Lua编写的高性能网络包过滤工具箱
  8. MongoDB性能优化指南
  9. Android 一个抽奖应用的逆向破解全流程之加固自己应用
  10. - (BOOL)setResourceValue:(id)value forKey:(NSString *)key error:(NSError **)error
  11. Android-Async-Http 特性简单分析
  12. using eclipse to write c programe 0
  13. 1.3 正则表达式和python语言-1.3.8 创建字符集([ ])
  14. 打造自己Django博客日记
  15. python sqlite3查看数据库所有表(table)
  16. HTML知识基础
  17. 用dataset保存数据注意的问题
  18. Netty源码分析第4章(pipeline)---->第2节: handler的添加
  19. HackRF 无线门铃信号录制与重放
  20. Github优秀开源项目

热门文章

  1. UTF-8转字典
  2. CSS选择器与XPath语言
  3. yii 之删除数据
  4. Yii 安装学习
  5. 一个关于 jquery 和 php 的 jsonp 例子(与后台PHP成功通信)
  6. 安装破解版的webstorne
  7. android 活动
  8. Codeforces 655E Beautiful Subarrays【01trie树】
  9. 真的了解CDN服务吗?
  10. go语言学习之路四:字典