assets文件夾資源的訪問

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

當然如果你要得到內存流的話也可以直接返回內存流!

 

摘自 agods–足跡

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *