有两种方式读取,一种是按行读取,一种是按大小读取;
主要代码如下:
一:按行读取
关键代码:
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(); }