美文网首页
Raw与Assets中资源的区别

Raw与Assets中资源的区别

作者: 规诫 | 来源:发表于2019-07-24 15:21 被阅读0次

    在建立项目中一般会默认建立assets文件,
    当然我们还可以在res文件下面建立raw文件夹,
    这里面都可以存放一些图片,音频或者文本信息,
    可以供我们在程序当中进行使用,不过他们两个也有不同点;
    assets下面的文件不会被编译,通过路径可以去访问其中的内容。
    raw中文件会自动编译,我们可以在R.java文件中找到对应的ID,

    Raw目录和Assets目录的区别

    1.Raw目录下的文件可以映射到R文件中,Assets目录不可以
    2.Raw目录下文件通过Resources类来获取,
    Assets目录下的文件通过AssetsManager类来获取
    3.Raw目录下不可以再创建文件夹,Assets目录可以
    4.Raw目录和Assets目录都是原生资源,在Apk打包时不会编译成二进制文件。

    代码

    // 1.获取AssetsManager对象
    AssetManager assetManager = getAssets();
    try {
        // 2.通过AssetsManager对象的open来获取文件名对应的输入流
        InputStream is = assetManager.open("aa/test2.txt");
        // 3.将流转为字符串
        BufferedReader br = new BufferedReader(new InputStreamReader(is, "gbk"));
        StringBuffer sb = new StringBuffer();
        String line = null;
        while ((line = br.readLine()) != null) {
        sb.append(line);
        }
        // 将读取到的内容吐司出来
        Toast.makeText(this, sb.toString(), Toast.LENGTH_SHORT).show();
    } catch (IOException e) {
        e.printStackTrace();
    }
    // 1.获取raw目录下的文件,需要用到资源管理类
    Resources resources = getResources();
    // 2.通过Resources对象的openRawResource(R.raw.test) 获取到指定的文件对应的流
    InputStream is = resources.openRawResource(R.raw.test);
    // 3.将流转为字符串
    try {
        BufferedReader br = new BufferedReader(new InputStreamReader(is, "gbk"));
        StringBuffer sb = new StringBuffer();
        String line = null;
        while ((line = br.readLine()) != null) {
        sb.append(line);
        }
        // 将读取到的内容吐司出来
        Toast.makeText(this, sb.toString(), Toast.LENGTH_SHORT).show();
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    
    

    相关文章

      网友评论

          本文标题:Raw与Assets中资源的区别

          本文链接:https://www.haomeiwen.com/subject/libxrctx.html