assets与raw数据读取

两者的异同点

res/raw和main/assets的相同点:

1.两者目录下的文件在打包后会保存在apk包中,不会被编译成二进制。

res/raw和main/assets的不同点:

1.res/raw中的文件会被映射到R.java文件中,访问的时候直接使用资源ID即R.raw.filename;assets文件夹下的文件不会被映射到R.java中,访问的时候需要AssetManager类。
2.res/raw不可以有目录结构,而assets则可以有目录结构,也就是assets目录下可以再建立文件夹。

示例代码

/*
 *author:zyc
 *date:20160422
 *
 */
public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private InputStream inputStream;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViewById(R.id.bt_assets).setOnClickListener(this);
        findViewById(R.id.bt_raw).setOnClickListener(this);
    }

    private void init() {
        try {
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            int size;
            while ((size = inputStream.read(buffer)) != -1) {
                bos.write(buffer, 0, size);
            }
            byte[] byteArray = bos.toByteArray();
            inputStream.close();
            bos.close();
            String result = new String(byteArray, "utf-8");
            Toast.makeText(MainActivity.this, result, Toast.LENGTH_SHORT).show();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.bt_assets:
                try {
                    //读取assets中的文件
                    AssetManager assets = getResources().getAssets();
                    inputStream = assets.open("as_assets.txt");
                    init();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                break;
            case R.id.bt_raw:
                //读取raw文件
                inputStream = getResources().openRawResource(R.raw.as);
                init();
                break;
        }
    }
}

运行结果:

这里写图片描述

很简单的一个笔记,就到这了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值