assets文件夹里面的文件都是保持原始的文件格式,需要用AssetManager以字节流的形式读取文件。
<wbr><wbr><wbr><wbr>1. 先在Activity里面调用<strong>getAssets()</strong>来获取AssetManager引用。</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr>2. 再用AssetManager的<strong>open(String fileName, int accessMode)</strong>方法则指定读取的文件以及访问模式就能得到输入流InputStream。<wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr>3. 然后就是用已经open file 的inputStream读取文件,读取完成后记得inputStream.<strong>close()</strong>。</wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr>4.调用AssetManager.<strong>close()</strong>关闭AssetManager。</wbr></wbr></wbr></wbr>
需要注意的是,来自Resources和Assets 中的文件只可以读取而不能进行写的操作 以下为从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(); } }
以下为直接从assets读取
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(); } }
当然如果你要得到内存流的话也可以直接返回内存流!