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