zoukankan      html  css  js  c++  java
  • Android 的assets文件资源与raw文件资源读取

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

    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(); 
                }             
        } 



查看全文
  • 相关阅读:
    FindWindowEx
    c# 基础知识
    propertychange 属性说明
    Python3-2020-测试开发-22- 异常
    Python3-2020-测试开发-21- 面向对象之封装,继承,多态
    Python3-2020-测试开发-20- Python中装饰器@property
    Python3-2020-测试开发-19- Python中私有属性和私有方法
    Python3-2020-测试开发-18- Python中方法没有重载
    Python3-2020-测试开发-17- 类编程
    Python3-2020-测试开发-16- 嵌套函数(内部函数 )&nonlacal声明外部函数的局部变量&LEGB规则
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10630329.html
  • Copyright © 2011-2022 走看看