Android 中存在assets目录和raw目录,它们既有相似之处又有所不同。

一、共同点:

目录下的资源会被原封不动的拷贝到APK中,而不会像其它资源文件那样被编译成二进制的形式。

二、区别

1、最直观的就是获取它们的 InputStream 的API不一样。

获取assets资源:InputStream assets = getAssets().open("xxxx");

获取raw资源:InputStream raw = getResources().openRawResource(R.raw.xxxx)

2、assets 下可以创建目录结构,而 res/raw 不可以。

3、assets 能够动态的列出assets中的所有资源 getAssets().list(String path); ,而 res/raw 不可以。

下面来说说它们主要的区别:

由于 raw 是Resources (res)的子目录,Android会自动的为这目录中的所有资源文件生成一个ID,这个ID会被存储在R类当中,作为一个文件的引用。这意味着这个资源 文件可以很容易的被Android的类和方法访问到,甚至在Android XML文件中你也可以@raw/的形式引用到它。在Android中,使用ID是访问一个文件最快捷的方式。MP3和Ogg文件放在这个目录下是比较合适 的。

assets目录更像一个附录类型的目录,Android不会为这个目录中的文件生成ID并保存在R类当中,因此它与 Android中的一些类和方法兼容度更低。同时,由于你需要一个字符串路径来获取这个目录下的文件描述符,访问的速度会更慢。但是把一些文件放在这个目 录下会使一些操作更加方便,比方说拷贝一个数据库文件到系统内存中。要注意的是,你无法在Android XML文件中引用到assets目录下的文件,只能通过AssetManager来访问这些文件。数据库文件和游戏数据等放在这个目录下是比较合适的。

另 外,网上关于assets和raw的资料,有说这两者中单个文件大小不能超过1M,即如果读取超过1M的文件 会报"Data exceeds UNCOMPRESS_DATA_MAX (1314625 vs 1048576)"的IOException,还引申出种种解决方案。经验证,写了个Demo,发现将近5M的压缩 包在assets和raw中都能正常访问,因此在这里纠正一下,理论上只要打包不超过Android APK 50M大小的限制都是没有问题的。当然了,不排除是Android很早期的时候因为设备硬件原因aapt在编译的时候对这两个文件夹大小做出了限制,如果是这样,较新版的ADT应该不会出现这种情况。

http://ponystyle.com/blog/2010/03 /26/dealing-with-asset-compression-in-android-apps/ 。这篇文章应该还蛮有说服力的,从根本上说明了当时Android2.3以前产生资源文件单个文件大小不能超过1M的原 因和部分解决方法。不过由于限制是当时的aapt决定的,现在已经更新了多个版本的aapt已经不存在这种问题了。

Android Studio增加assets目录、raw目录

assets与res/raw不同 assets目录是Android的一种特殊目录,用于放置APP所需的固定文件,且该文件被打包到APK中时,不会被编码到二进制文件. Android还存在一种放置在re ...

【转】android资源目录---assets与res/raw区别

blog.csdn.net/hshm20517/article/details/6461890 assets:用于存放需要打包到应用程序的静态文件,以便部署到设备中.与res/raw不同点在于,ASS ...

android资源目录---assets与res/raw区别

android资源目录---assets与res/raw的不同 Android 2011-05-24 14:40:21 阅读20 评论0   字号:大中小 订阅 assets:用于存放需要打包到应用程 ...

AssetsUtils【读取assets、res/raw、./data/data/包名/目录下的文件】

版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 封装了以下功能: 1.读取assets目录下的资源html.文件.图片,将文件复制到SD卡目录中: 2.读取res/raw目录下的文 ...

Android开发 assets目录

Android资源文件分类: Android资源文件大致可以分为两种: 第一种是res目录下存放的可编译的资源文件: 这种资源文件系统会在R.Java里面自动生成该资源文件的ID,所以访问这种资源文件 ...

assets与res/raw资源目录的区别

1.简介 assets和res/raw工程目录下都可以放一些小于1M的文件(2.3版本以前要求,否则将不能读出数据.),这些文件将被原样打包到APK中应用使用. 2.不同 assets目录下的文件将原 ...

Android读取assets目录下的资源

1.获取资源的输入流 资源文件 sample.txt 位于 $PROJECT_HOME/assets/ 目录下,可以在 Activity 中通过 Context.getAssets().open(“s ...

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

Android开发离不开对文件的操作,前面的文章“Android简易数据存储之SharedPreferences”和“Android数据存储之SQLite的操作”,分别讲解了简单的数据的存储和数据库数 ...

Android快速开发常用知识点系列目录

项目构建 Android项目目录结构模板以及简单说明[简单版] Android Studio配置统一管理依赖版本号引用 Android多Module下的Application引用方式 APP开篇 An ...

随机推荐

Activity 横竖屏切换

前言 在开发中常要处理横竖屏切换,怎么处理先看生命周期 申明 Activity 横竖屏切换时需要回调两个函数 ,所以在此将这个两个函数暂时看成是Activity 横竖屏切换的生命周期的一部分,这两个函 ...

Win7 64位命令行编译cuda及设置Windows显卡响应时间

在开始菜单中找到Visual Studio 2013 >> Visual Studio Tools 选择86或64版本的VC命令提示符环境,我用的 VS2013 x86 Native To ...

[salesforce] URLFOR function finally

While developing your Visualforce pages you may need to be able to obtain the URL of certain actions ...

Event/window.Event属性和方法

type:事件的类型,如onlick中的click:srcElement/target:事件源,就是发生事件的元素:button:声明被按下的鼠标键,整数,1代表左键,2代表右键,4代表中键,如果按下 ...

Visual C#使用DirectX实现视频播放

Visual C#使用DirectX实现视频播放 visual|视频播放 - 很多人第一次接触到DirectX大都是通过游戏,至于安装.升级DirectX的原因无非是满足游戏运行的需要.Direct ...

eclipse的插件

jode_1.0.6(Java Optimize and Decompile Environment ) 非常好用的Eeclipse的反编译插件,随时点击,随时查看源代码,但他的官方下载的都是核心源码 ...

vscode 正则表达式替换

比如把1.aa2.bbb替换成 1.aa2.bbb则,查找\d+ 替换成 \n$0 $0为查找的正则匹配项editplus为\0

使用kermit通过串口升级uboot

在开发板的启动选项中看到如下两行: 7: Load Boot Loader code then write to Flash via Serial. 9: Load Boot Loader code ...

学习笔记TF025:自编码器

传统机器学习依赖良好的特征工程.深度学习解决有效特征难人工提取问题.无监督学习,不需要标注数据,学习数据内容组织形式,提取频繁出现特征,逐层抽象,从简单到复杂,从微观到宏观. 稀疏编码(Sparse ...

nova event

nova处理neutron发送过来的event事件.暂时追踪nova event部分代码 tail -f /var/log/nova/nova-api.log  下面就是一个事件  Creating ...

android下raw目录的作用,Android 之 assets目录和raw目录相关推荐

  1. linux下dev目录的作用,Android/Linux根目录下常见目录作用

    当adb shell进入Android系统内部后,ls会看到根目录下出现不少目录,如dev.sys.mnt等目录,对于这些目录的作用常常让人模棱两可,有必要对其学习了解. 首先要明白目录也是一种文件, ...

  2. android:ellipsize=end 不起作用,android:ellipsize=end 失效或者 相关的Bug

    其实这文章有点傻逼. 相关的问题 TextView android:ellipsize="end"超出一个字符时不显示-的解决 http://www.pocketdigi.com/ ...

  3. Android中layout目录的作用,Android 开发中layout下的子文件夹

    Android 开发中layout下的子文件夹 发布时间:2020-10-25 11:42:36 来源:脚本之家 阅读:71 作者:厚土火焰山 如果一个项目内有很多个界面,那么在layout下会有太多 ...

  4. android 多语言不起作用,Android本地化语言环境不起作用,所有区域代码都存在问题...

    我需要将除瑞士之类的子语言环境添加到我的应用程序中,而不是普通的德语. 我找到的德语资源文件夹的语言环境扩展名为de.所以我的文件夹名为"values-de".这很好. 然后我添加 ...

  5. android wms各个类的作用,Android系统服务 —— WMS

    "可以毫不夸张的说,Android的framework层主要是由WMS.AMS还有View所构成,这三个模块穿插交互在整个framework中,掌握了它们之间的关系和每一个逻辑步骤,你对fr ...

  6. android 隐藏状态栏 不起作用,Android 状态栏的隐藏和显示

    在Android应用中我们可能会碰到这样的需求,隐藏状态栏或者状态栏和应用背景一样的颜色,比如下图: 状态栏和背景一个颜色 Android应用程序的界面上系统元素构成如下图: 在4.1之后的系统,隐藏 ...

  7. android 下拉刷新实现方式,Android RecyclerView设置下拉刷新的实现方法

    Android RecyclerView设置下拉刷新的实现方法 1 集成 SwipeRefreshLayout 1.1 xml布局文件中使用 android:id="@+id/refresh ...

  8. android中监听的作用,Android里的AdapterView中OnItemClickListener监听器四个参数的含义...

    对Android开发中的Adapter接口的onItemClickListener监听器四个参数(arg)的理解: 代码:public void onItemClick(AdapterView> ...

  9. android下拉刷新的方法,Android App使用RecyclerView实现上拉和下拉刷新的方法

    关于recyclerview recyclerview在android 5.0以来被引入,以前经常使用的listview 继承的是abslistview,而recyclerview则直接继承 view ...

最新文章

  1. PHP连接MySQL的2种方法以及防止乱码
  2. 在docker中使用MySQL数据库
  3. linux查看文件隐藏字符,Linux使用cat命令显示隐藏字符的方法
  4. python初学者编程指南_动态编程初学者指南
  5. java 字节序列_java – 这个线程安全的字节序列生成器有什么问题?
  6. oracle cronb,利用Crontab实现对Oracle数据库的定时备份
  7. dbscan算法中 参数的意义_常用聚类算法
  8. 灵活地横向扩展:从文件系统到分布式文件系统
  9. Jquery通过ajax加载json,jquery ajax json 异步加载数据
  10. 运动会比赛计分系统c语言课程设计,c语言课程设计运动会比赛计分系统(含任务书).doc...
  11. web网页对话框的一些设置
  12. 第五讲 交错级数、绝对收敛和条件收敛
  13. B站视频下载:如何下载B站视频到电脑上
  14. 国内汽车车载电源DCDC首家,硬件原理图,软件源码
  15. 基于 SLS 构建 RDS 审计合规监控
  16. 人生是一场旅程,重要的不是终点,是自己路上的风景
  17. 数据可视化案例(四)——新零售数据大脑,助力智慧零售
  18. 英语口语232之每日十句口语
  19. 如何彻底删除keil5
  20. 二[2-(2,4-二氟苯基)-5-甲基吡啶][2,2‘-联(四叔丁基吡啶)]铱二(六氟磷酸)盐,1335047-34-1

热门文章

  1. HTMLCSS 超简单的前端设计入门-2!
  2. 2019-03-18-算法-进化(有效的字母异位词)
  3. CF623E Transforming Sequence(多项式/倍增fft/动态规划)
  4. P3706 [SDOI2017]硬币游戏
  5. A - TOYS POJ - 2318
  6. 牛客网 【每日一题】4月15日 Treepath
  7. CodeForces 1396E Distance Matching(构造+树的重心+dfs+set)
  8. 8.12模拟:dp递推
  9. 4.6模拟 宽度优先搜索
  10. P1447-[NOI2010]能量采集【GCD,数论,容斥】