zoukankan      html  css  js  c++  java
  • 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 + "
    ");
                    }
                    //关流
                    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来读取文件。

  • 相关阅读:
    host 文件位置
    Django 前后端分离开发配置 跨域
    pycharm 关闭单词拼写检查(Typo: In word 'cacheable' )
    Python : argument name should be lowercase 警告处理解决方法
    pycharm 变量名 (Shadows built-in name 'id' )问题
    三体
    12.URL下载网络资源
    11.UDP多线程在线咨询
    10.UDP实现聊天
    9.UDP
  • 原文地址:https://www.cnblogs.com/lishbo/p/9956022.html
Copyright © 2011-2022 走看看