Android:讀取assets目錄下文件(一)


在Android開發中,資源文件一般分為兩種:

1.可編譯的資源文件,放在res目錄下,例如布局文件,這種資源文件系統會在R.java里面自動生成該資源文件的ID,直接通過R.X.ID就可以訪問。
2.原生資源文件,保持原始的文件格式,存放在assets目錄下。通過Android系統為我們提供的AssetManager,以簡單的字節流的形式打開和讀取這些資源文件。例如公司簡介、服務協議等內容,通常放在這個文件夾。

這篇文章先講下讀取assets目錄下的txt文件,示例代碼如下:

package com.li.readassetfile;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

import android.app.Activity;
import android.content.res.AssetManager;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.TextView;

public class ReadTxtActivity extends Activity {

    private TextView tvContent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_read_txt);

        tvContent = (TextView) findViewById(R.id.tvContent);

        new ReadTxtTask().execute();
    }

    private class ReadTxtTask extends AsyncTask<Void, Void, String> {

        @Override
        protected String doInBackground(Void... params) {
            AssetManager manager = getResources().getAssets();
            try {
                InputStream inputStream = manager.open("joke.txt");
                InputStreamReader isr = new InputStreamReader(inputStream,
                        "UTF-8");
                BufferedReader br = new BufferedReader(isr);
                StringBuilder sb = new StringBuilder();
                String length;
                while ((length = br.readLine()) != null) {
                    sb.append(length + "\n");
                }
                //關流
                br.close();
                isr.close();
                inputStream.close();

                return sb.toString();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return "";
        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            tvContent.setText(result);
        }
    }
}

效果圖:
讀取txt文件

不要忘了關閉相關IO流。
另外,如果文件內容比較長,可能會引起ANR,所以這里使用AsyncTask來讀取文件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM