读取raw文件下文件内容

相关链接:

Android 读取文件
http://www.eoeandroid.com/thread-97495-1-1.html

Android 私有文件夹 文件的写入与读取
http://www.eoeandroid.com/thread-69378-1-1.html

Android 读取文件内容操作
http://www.eoeandroid.com/thread-82295-1-1.html

----------------------帖子正文-----------------------------

AsyncTask,异步处理,主要用于将比较耗时的操作从主线程(UI线程)中分离出来处理,提高运行速度(流畅度)。本来是要学习AsyncTask的,当看到耗时操作时就考虑到了读取大文件操作,然后自己试着读取raw文件夹下面的文件。
有两种方式读取,一种是按行读取,一种是按大小读取;
主要代码如下:
一:按行读取

class FileReadTask extends AsyncTask<String, String, String> {
                 String line_str;
                 String result;
                 Context context;
 
                FileReadTask(Context context) {
                         this.context = context;
                 }
                 int i = 0;
                 @Override
                 protected String doInBackground(String... params) {
                         BufferedReader reader = new BufferedReader(new InputStreamReader(
                                         context.getResources().openRawResource(R.raw.test2)));
                         try {
                                 while ((line_str = reader.readLine()) != null
                                                 && !(line_str = reader.readLine()).equals("")) {
                                         result += line_str;
                                         System.out.println("line_str:"+line_str);
                                         publishProgress(line_str);
                                 }
                                 System.out.println("result:"+result);
                         } catch (IOException e) {
                                 e.printStackTrace();
                         }
                         return line_str;
                 }
 
                @Override
                 protected void onPostExecute(String result) {
                         super.onPostExecute(result);
 
                }
 
                @Override
                 protected void onPreExecute() {
                         super.onPreExecute();
 
                }
 
                @Override
                 protected void onProgressUpdate(String... values) {
                         super.onProgressUpdate(values[0]);
                         System.out.println("values:" + values[0]);
                         array.add(values[0]);
                         adapter.notifyDataSetChanged();
                 }
 
        }
 

二:按大小读取

InputStream input = context.getResources().openRawResource(R.raw.test2);
                 String result = null;
                 int i;
                 byte[] by = new byte[128];//每次读取大小
                 try {
                         while((i = input.read(by))>0){
                                 byte[] bys = new byte[i];
                                 input.read(bys,0,i);
                                 String s = new String(bys);
                                 result +=s;
                                 System.out.println(s);
                         }
                 } catch (IOException e) {
                         e.printStackTrace();
                 }

 

转载于:https://www.cnblogs.com/nuliniaoboke/archive/2013/01/24/2874653.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值