goback add

assets文件夹资源的访问

3382 点击·0 回帖
灯火互联
楼主


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 中的文件只可以读取而不能进行写的操作
以下为从Raw文件中读取:

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

以下为直接从assets读取

[java] public String getFromAssets(String fileName){  
            try {  
                 InputStreamReader inputReader = new InputStreamReader( getResources().getAssets().open(fileName) );  
                BufferedReader bufReader = new BufferedReader(inputReader);
                String line="";
                String Result="";
                while((line = bufReader.readLine()) != null)
                    Result += line;
                return Result;
            } catch (Exception e) {  
                e.printStackTrace();  
            }
    }  
public String getFromAssets(String fileName){
            try {
                 InputStreamReader inputReader = new InputStreamReader( getResources().getAssets().open(fileName) );
                BufferedReader bufReader = new BufferedReader(inputReader);
                String line="";
                String Result="";
                while((line = bufReader.readLine()) != null)
                    Result += line;
                return Result;
            } catch (Exception e) {
                e.printStackTrace();
            }
    }

当然如果你要得到内存流的话也可以直接返回内存流!



喜欢0 评分0