读取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();

                 }

 

你可能感兴趣的:(raw)