安卓之讀取raw資料夾下得txt檔案
阿新 • • 發佈:2019-01-27
安卓讀取raw資料夾下得txt檔案
相信老哥們對raw資料夾不陌生:
res/raw資料夾下得內容會原封不動得打包進apk中,不會被編譯成二進位制檔案。
還有一點就是res/raw資料夾不可以有目錄結構。
使用:
res/raw下得檔案會被對映到R.JAVA中,所以訪問時我們可以通過R.id.filename來獲取。在xml檔案中你也可以通過@raw/得方 式來引用您想引用得檔案。
Demo:讀取res/raw下存放的一個text檔案
Demo示例:
主要程式碼(對檔案操作):
InputStream is = mContext.getResources().openRawResource(R.raw.disclaimer);//把檔案轉換為輸入流 StringBuffer response = new StringBuffer(); //建立StringBuffer例項 BufferedReader br = new BufferedReader(new InputStreamReader(is)); //根據is建立緩衝字元輸入流 String s = null; //建立s變數 try { //try語句捕獲異常 while ((s = br.readLine()) != null) { //把這一行的值賦值給變數s,並判斷是否有值 response.append(s); //把值新增進StringBuffer response.append("\n"); //再新增一個換行符 } } catch (IOException e) { // TODO Auto-generated catch block //catch異常處理 e.printStackTrace(); //得到錯誤的例項, 呼叫方法在命令列列印程式出錯的位置及原因 } finally { //finally try語句大多數情況下都會執行的程式碼塊 try { if (is != null) { //如果檔案輸入流不為空 is.close(); //呼叫close函式關掉輸入流 } if (br != null) { //如果緩衝字元輸入流不為空 br.close(); //呼叫close函式關掉緩衝字元輸入流 } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
Code_MainActivity:
package com.contentraw.contentraw; import android.content.Context; import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.ProgressBar; import android.widget.TextView; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; public class MainActivity extends AppCompatActivity { private TextView textview_content; private ProgressBar mProgressBar; private Context mContext = MainActivity.this; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textview_content = (TextView) findViewById(R.id.textview_content); mProgressBar = (ProgressBar) findViewById(R.id.mProgressBar); setContentData(); } private void setContentData() { new AsyncTask<Void, Void, String>() { @Override protected void onPreExecute() { super.onPreExecute(); mProgressBar.setVisibility(View.VISIBLE); } @Override protected String doInBackground(Void... paramArrayOfParams) { InputStream is = mContext.getResources().openRawResource(R.raw.disclaimer); StringBuffer response = new StringBuffer(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String s = null; try { while ((s = br.readLine()) != null) { response.append(s); response.append("\n"); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { if (is != null) { is.close(); } if (br != null) { br.close(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return response.toString(); } @Override protected void onPostExecute(String result) { super.onPostExecute(result); mProgressBar.setVisibility(View.GONE); textview_content.setText(result); } }.execute(null, null, null); } }
Demo直達下載通道
如有問題請多指正,您的指正使我更正確的前行.