• Android笔记(四十九) Android中的资源访问——asset


        1.文件读取方式
        AssetManager.open(String filename),返回的是一个InputSteam类型的字节流,这里的filename必须是文件,而不能是文件夹,AssetManager打开资源文件的open方法是一个重载方法,可以添加一个打开方式的int参数,根据参数不同可做相应操作。

        2.资源文件是可以存在文件夹以及子目录
        public final String[]list(String path),返回当前目录下面的所有文件以及子目录的名称。可以通过递归遍历整个文件目录,实现所有资源文件的访问。

    MainActivity.java

    package cn.lixyz.iotest.activity;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.EditText;
    import cn.lixyz.iotest.R;
    import cn.lixyz.iotest.util.IOFile;
    
    public class MainActivity extends Activity implements OnClickListener {
    
        private Button bt_asset_read;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            findView();
    
            bt_asset_read.setOnClickListener(this);
        }
    
        public void findView() {
            bt_asset_read = (Button) findViewById(R.id.bt_asset_read);
        }
    
        @Override
        public void onClick(View v) {
            IOFile ioFile;
            switch (v.getId()) {
            case R.id.bt_asset_read:
                ioFile = new IOFile(this);
                ioFile.readFromAsset(this);
                break;
            }
        }
    
    }

    activity_main.xml

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context="cn.lixyz.iotest.activity.MainActivity" >
    
        <Button
            android:id="@+id/bt_asset_read"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="ASSET目录读取" />
    
    </LinearLayout>

    IOFile.java

    package cn.lixyz.iotest.util;
    
    import java.io.IOException;
    import java.io.InputStream;
    
    import android.content.Context;
    import android.content.res.AssetManager;
    import android.util.Log;
    
    public class IOFile {
    
        Context mContext;
    
        public IOFile(Context context) {
            mContext = context;
        }
    
        // 读取asset目录中的内容
        public void readFromAsset(Context context) {
            try {
                // 获取asset管理器
                AssetManager assetManager = context.getAssets();
                // 通过asset管理器获取asset目录下的子目录下的文件
                String[] filesName = assetManager.list("txts");
    
                // 循环读出文件内容
                for (int i = 0; i < filesName.length; i++) {
    
                    InputStream inputStream = assetManager.open("txts/" + filesName[i]);
                    byte[] bytes = new byte[inputStream.available()];
                    inputStream.read(bytes);
                    String str = new String(bytes);
    
                    Log.d("TTTT", filesName[i] + "的内容是:" + str);
                }
    
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    
    }
  • 相关阅读:
    【SICP练习】150 练习4.6
    windows已安装solr
    ps快速删除圆角图片旁白的白色区域方法
    junit学习笔记(二):hamcrest和TestSuit
    取球游戏
    【Linux操作系统分析】设备驱动处理流程
    POJ Secret Milking Machine 【网络流+二分】
    oracle 10 g 需要启动的2个服务
    jQuery也能舞出绚丽的界面(完结篇)
    HDU 2665(Kth number-区间第k大[内存限制+重数])
  • 原文地址:https://www.cnblogs.com/xs104/p/4926630.html
Copyright © 2020-2023  润新知