我用下面代码从sdcard读容量比较大的文件时可以读出来:                        InputStream is=null;
try {
is = new FileInputStream(new File("/sdcard/aa.txt"));
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
        try {
InputStreamReader isr=new InputStreamReader(is,"gbk");
BufferedReader br=new BufferedReader(isr);
但是如果我把文件放到自己建的raw文件夹下读小文件时没问题,大文件时报io异常(代码如下),求解决:                    InputStream is=getResources().openRawResource(R.raw.aa);
           try {
InputStreamReader isr=new InputStreamReader(is,"gbk");
BufferedReader br=new BufferedReader(isr);

解决方案 »

  1.   

    这个是android对资源的限制,不管是raw下还是assets下,都不能装单个大文件,大约1.2M,超过了就会读取出错。所以大文件最好不要装在raw下。
      

  2.   


    哦,那我们需求必须将文件和apk绑定一起,所以一定要放资源文件下面啊。
    有解决方法吗?
      

  3.   

    如果只是.txt这类的文件,那是不是可以拆分成若干个小文件,在文件开头添加自己的识别tag信息,校验处理一下,在读取。若是mp3 mp4什么的文件 就得研究一下其文件数据的内容了……
      

  4.   

    其实,你只要将aa.txt改成aa.jpg就可以读出来了。不要相信那些砖家们,实践才是检验真理的唯一标准。嘿嘿~