例如:现在我的项目文件夹Resource/book/下有:
chapter1.txt
chapter2.txt
chapter3.txt
chapter4.txt
chapter5.txt
...怎么把这些文件读进来?

解决方案 »

  1.   

    这个一般用于帮助文件之类的,比如项目根目录下有assets文件夹,存在一个文件readme.txt,下面就是读这个文件:
    String showtxt="帮助文件丢失!";
    InputStream is;
    try {
    is = getAssets().open("readme.txt");
    int size = is.available(); 
                byte[] buffer = new byte[size];   
                 is.read(buffer);   
                 is.close();   
                 showtxt = new String(buffer, "GB2312"); 
    } catch (IOException e) {     
        throw new RuntimeException(e);   
           }   
    new CustomDialog(MainActivity.this,
    CustomDialog.DIALOG_DETAILS,"关于",showtxt).show();
      

  2.   

    用 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文件中读取:
    代码
     
       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(); 
                }
        } 
    当然如果你要得到内存流的话也可以直接返回内存流!