Android 的assets文件资源与raw文件资源读取

res/raw和assets的相同点:

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

res/raw和assets的不同点:

1.res/raw中的文件会被映射到R.java文件中,访问的时候直接使用资源ID即R.id.filename;assets文件夹下的文件不会被映射到R.java中,访问的时候需要AssetManager类。

2.res/raw不可以有目录结构,而assets则可以有目录结构,也就是assets目录下可以再建立文件夹

*读取文件资源:

1.读取res/raw下的文件资源,通过以下方式获取输入流来进行写操作

  • InputStream is = getResources().openRawResource(R.id.filename);

2.读取assets下的文件资源,通过以下方式获取输入流来进行写操作

  • AssetManager
    am = null;
  • am = getAssets();
  • InputStream
    is = am.open("filename");

assets文件夹里面的文件都是保持原始的文件格式,需要用AssetManager以字节流的形式读取文件。

1. 先在Activity里面调用getAssets() 来获取AssetManager引用。

2. 再用AssetManager的open(String fileName, int accessMode) 方法则指定读取的文件以及访问模式就能得到输入流InputStream。

3. 然后就是用已经open file 的inputStream读取文件,读取完成后记得inputStream.close() 。

4.调用AssetManager.close() 关闭AssetManager。

需要注意的是,来自Resources和Assets 中的文件只可以读取而不能进行写的操作

以下为Assets文件中读取:

public class ReadAsset extends Activity
{
    @Override
	protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.read_asset);

        try {
            InputStream is = getAssets().open("read_asset.txt");//文件夹下的一个二进制文件

            int size = is.available();

            // Read the entire asset into a local byte buffer.
            byte[] buffer = new byte[size];
            is.read(buffer);
            is.close();

            // Convert the buffer into a string.
            String text = new String(buffer);

            // Finally stick the string into the text view.
            TextView tv = (TextView)findViewById(R.id.text);
            tv.setText(text);
        } catch (IOException e) {
            // Should never happen!
            throw new RuntimeException(e);
        }
    }
}

以下为从Raw文件中读取:

 public String getFromRaw(){
            try {
                InputStreamReader inputReader = new InputStreamReader( getResources().openRawResource(R.raw.test1));
                BufferedReader bufReader = new BufferedReader(inputReader);
                String line="";
                String Result="";
                while((line = bufReader.readLine()) != null)
                    Result += line;
                return Result;
            } catch (Exception e) {
                e.printStackTrace();
            }
    } 

Android 的assets文件资源与raw文件资源读取

时间: 2024-10-16 22:08:53

Android 的assets文件资源与raw文件资源读取的相关文章

资源文件assets和 res下面raw文件的使用不同点

在建立项目中一般会默认建立assets文件,当然我们还可以在res文件下面建立raw文件夹,这里面都可以存放一些图片,音频或者文本信息,可以供我们在程序当中进行使用,不过他们两个也有不同点: assets下面的文件不会被编译,通过路径可以去访问其中的内容.raw中文件会自动编译,我们可以在R.java文件中找到对应的ID, 看下面截图: 那么既然这样那我们平时该怎么样进行把资源放入这两个文件当中呢? 我个人平时喜欢比较文件的大小,如果文件比较大一点的会放入到aeests文件中,因为用这个文件文件

Android中asset文件夹和raw文件夹

res/raw和assets的相同点: 两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制. assets和res/raw工程目录下都可以放一些小于1M的文件(2.3版本以前要求,否则将不能读出数据.),这些文件将被打包到APK中应用使用.assets目录下的文件将不做任何处理被打包,,如果你的资源很大,例如视频等等,应该单独存储在文件系统中. res/raw和assets的不同点: 1.res/raw中的文件会被映射到R.java文件中,访问的时候直接使用资源ID即R.i

Android中asset文件夹和raw文件夹区别

*res/raw和assets的相同点: 1.两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制. *res/raw和assets的不同点:1.res/raw中的文件会被映射到R.java文件中,访问的时候直接使用资源ID即R.id.filename:assets文件夹下的文件不会被映射到R.java中,访问的时候需要AssetManager类.2.res/raw不可以有目录结构,而assets则可以有目录结构,也就是assets目录下可以再建立文件夹 *读取文件资源: 1

Android读取asserts和raw文件夹下的文件

经常需要用到读取"/res/raw"和"/asserts"文件夹下的文件,索性写成工具类方便以后使用. 一.raw文件夹下的文件操作工具类: /** * raw文件夹下的文件处理工具类 * * */ public class RawFileUtils { private RawFileUtils( ){ } /** * 读取raw文件夹下的文件 * @param resourceId raw文件夹下的文件资源ID * @return 文件内容 * * */ publ

raw文件转mha文件

raw格式 在体数据(volume)中,经常会遇到raw文件,raw文件就是其实就是所有体素组成的文件,raw文件必须还有一些描信息才能用(因为得知道数据的size,type,spacing等),就像.mhd文件是对raw文件的一个描述.在医学数据处理中,经常使用mha文件格式来对数据进行处理,因为mha文件格式比较简单,而且包含了所有的基本图像信息(之前一篇有简单介绍).所以本文要介绍将raw格式的文件转为mha格式.其实也不一定是raw文件,因为不论是什么后缀名,数据的内容都不会变化. 代码

【Android】资源系列(二) -- 文件原样保留的资源assets和res/raw目录

这两个目录都可以存放文件,而在打包的时候被原样保留. 那用这两个目录能够做什么事呢? 1.放一个apk,要用的时候调出来,免得去下载服务器下载. 2.放一个sql,当app数据库很大的时候,这可以省事很多. 3.放一段视频.录音等,作为开机启动的介绍,是不是很炫..... 那问什么要弄两个目录呢.... 其实assets翻译为"资源",raw翻译为"原始的",并且在res目录下,res故名思议,它下面放的就是资源,还有很多呢.例如动画.图片.xml.ids.valu

Android读写assets、raw、sdard和工程文件的方法

Android开发离不开对文件的操作,前面的文章“Android简易数据存储之SharedPreferences”和“Android数据存储之SQLite的操作”,分别讲解了简单的数据的存储和数据库数据的操作.然而,前面的两篇文章都未涉及具体文件的操作.下面来看下Android是怎么操作其内置目录文件及外部sdcard数据的. 环境:Android studio.海马玩模拟器 资源文件: /assets目录下test.txt aaaaaaaaaaaaaa bbbbbbb /res/raw(需要手

Android(java)学习笔记135:Android中assets文件夹资源的访问

Android资源文件分类: Android资源文件大致可以分为两种: 第一种是res目录下存放的可编译的资源文件: 这种资源文件系统会在R.java里面自动生成该资源文件的ID,所以访问这种资源文件比较简单,通过R.XXX.ID即可: 第二种是assets目录下存放的原生资源文件: 因为系统在编译的时候不会编译assets下的资源文件,所以我们不能通过R.XXX.ID的方式访问它们.那我么能不能通过该资源的绝对路径去访问它们呢?因为apk安装之后会放在/data/app/**.apk目录下,以

Android学习--Assets资源文件读取及AssetManager介绍

APK安装过程 复制APK安装包到data/app目录下,解压并扫描安装包,把dex文件(Dalvik字节码)保存到dalvik-cache目录,并data/data目录下创建对应的应用数据目录,Android系统在sdcard上为每一个应用分配了存储路径:/sdcard/Android/data/$(应用的包路径),该路径可以通过 context.getExternalFilesDir 得到,一般应用卸载的时候,该目录也会随之被删除. Android资源文件分为两类: 第一种是res目录下存放