assets raw 资源 AssetManager
assets raw 目录简介
assets 文件夹是存放不进行编译加工的原生文件,即该文件夹里面的文件不会像 xml、 java 文件那样会被预编译。常用来存放一些图片、音频、html、js、css等文件。如果你需要更灵活、自由的控制资源文件,那么【/assets】目录就是你的首选了。assets 特点:
- 目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制。这一点和【res/raw】目录下的文件一致
- 目录下的文件是通过完整文件名访问的(assets目录为根目录),访问的时候需要使用AssetManager管理类。而res目录下的资源文件都会被映射到【R.java】文件中,并且都是通过资源的ID访问的,如:R.raw.name,R.drawable.name,R.color.name等。这是和【res/raw】最大的区别。
- 可以任意的建立子目录,而res目录中的资源文件是不能自行建立子目录的
关于存放文件的大小限制问题:网上传言,assets和raw目录中不可以放超过1M(4M)的文件,否则会出问题。但是实际上,我在assets和raw放一个10M+的音频用MediaPlayer播放时,都没有任何问题(可以完整播放)。相反,我在assets和raw放一个1M-的音频用SoundPool播放时,都不能完全播放(只能播放十几秒,后面的全部丢失了)。所以,我觉得不是assets和raw目录对文件大小做了限制,是你读取文件的API对流的大小做了限制从而导致文件不能被全部读取。assets raw 目录下文件的访问示例
对于assets,这里访问的文件"data.txt"是"bqt"目录下的文件,而"bqt"目录是以assets为根目录的。
InputStream in = getResources().getAssets().open("bqt/data.txt");
InputStream in2 = getResources().openRawResource(R.raw.data);
AssetFileDescriptor afd = getResources().getAssets().openFd("bqt/data.txt");
AssetFileDescriptor afd2 = getResources().openRawResourceFd(R.raw.data);
AssetManager 简介【重要】
public final class AssetManager extends Object implements AutoCloseable
- int ACCESS_BUFFER:Attempt to load contents into memory, for fast small reads. 尝试将内容加载到内存中,以实现快速读取。
- int ACCESS_RANDOM:Read chunks, and seek forward and backward. 读取块,向前和向后寻找。
- int ACCESS_STREAMING:Read sequentially, with an occasional forward seek. 顺序读取,偶尔前向搜索。
- int ACCESS_UNKNOWN:no specific information about how data will be accessed. 没有关于如何访问数据的具体信息。
- final InputStream open(String fileName) Open an asset using ACCESS_STREAMING mode.
- This provides access to files that have been bundled with an application as assets -- that is, files placed in to the "assets" directory. 这提供了将作为assets捆绑到应用程序的文件(即放置在“assets”目录中的文件)的访问方式。
- String fileName: The name of the asset to open. This name can be hierarchical(分层的,按等级划分的;即:带目录). i.e., "docs/home.html".
- final InputStream open(String fileName, int accessMode) Open an asset using an explicit access mode, returning an InputStream to read its contents.
- final AssetFileDescriptor openFd(String fileName)
- final AssetFileDescriptor openNonAssetFd(String fileName)
- final AssetFileDescriptor openNonAssetFd(int cookie, String fileName) int cookie: Identifier(识别符) of the package to be opened.
- final XmlResourceParser openXmlResourceParser(String fileName) Retrieve a parser for a compiled XML file.
- final XmlResourceParser openXmlResourceParser(int cookie, String fileName) Retrieve a parser for a compiled XML file.
- void close() Close this asset manager.
- final String[] getLocales() Get the locales that this asset manager contains data for.
- On SDK 21 (Android 5.0: Lollipop) and above, Locale strings are valid BCP-47 language tags and can be parsed using forLanguageTag(String). 在SDK 21及以上版本中,区域设置字符串是有效的BCP-47语言标签,可以使用forLanguageTag(String)进行解析。
- On SDK 20 (Android 4.4W: Kitkat for watches) and below, locale strings are of the form ll_CC where ll is a two letter language code, and CC is a two letter country code. 在SDK 20及以下版本中,语言环境字符串的形式为ll_CC,其中ll是双字母语言代码,CC是两个字母的国家代码。
- final String[] list(String path) Return a String array of all the assets at the given path.
- Returns:String[] Array of strings, one for each asset. These file names are relative to 'path'. You can open the file by concatenating 'path' and a name in the returned string (via File) and passing that to open().
- 返回:String []字符串数组,每个asset一个。 这些文件名与“路径”相关。 您可以通过连接“path”和返回的字符串中的名称(通过File)打开文件,并将其传递给open()。
public final class AssetManager.AssetInputStream extends InputStream
assets raw 资源 AssetManager的更多相关文章
- Android的xml/assets/raw资源使用具体解释
一.assets/xml/raw资源介绍 1.assets资源文件夹:assets文件夹下存放的资源代表应用无法直接訪问的原生资源,这些文件将原封不动的存储到设备上,不会被编译为二进制形式,訪问方式是 ...
- Android 的assets文件资源与raw文件资源读取
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zpf8861/article/details/34504183 res/raw和assets的同 ...
- assets与res/raw资源目录的区别
1.简介 assets和res/raw工程目录下都可以放一些小于1M的文件(2.3版本以前要求,否则将不能读出数据.),这些文件将被原样打包到APK中应用使用. 2.不同 assets目录下的文件将原 ...
- Android ndk下用AssetManager读取assets的资源
转自:http://www.cppblog.com/johndragon/archive/2012/12/28/196754.html 在使用 cocos2dx 在 Android 上进行游戏开发时, ...
- Android中的asserts和res/raw资源目录
1.assets目录 assets目录下称为原生文件,无法通过R资源清单类访问,这类文件在被打包成apk文件时是不会进行压缩的: (1)使用方法 AssetManager assets = this. ...
- Android 读取Assets中资源
//读取文件 private static String getFromAssets(Context context, String fileName) { String result = " ...
- 读书笔记 effective c++ Item 15 在资源管理类中提供对原生(raw)资源的访问
1.为什么需要访问资源管理类中的原生资源 资源管理类是很奇妙的.它们是防止资源泄漏的堡垒,没有资源泄漏发生是设计良好的系统的一个基本特征.在一个完美的世界中,你需要依赖这样的类来同资源进行交互,绝不 ...
- Android MediaPlayer播放raw资源封装类
import android.content.Context; import android.media.MediaPlayer; import xxxx.R; public class MediaU ...
- 为什么angular library的build不能将assets静态资源打包进去(转)
Versions Angular CLI: 6.0.7 Node: 9.3.0 OS: darwin x64 Angular: 6.0.3 ... animations, common, compil ...
随机推荐
- Counter Strike HDU 2443 逆序对数
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2443 这个题目尝试了很多种方法都过不去,上网查了一下网友们的的思路,竟然和逆序对数有关系!! 题目大意: ...
- “通用类型系统”(CTS)
一.什么是“通用类型系统”(CTS) 描述类型的定义和行为 二.CTS规范 一个类型可以包含零个或者多个成员1,成员①字段(Field)作为对象状态一部分的数据变量.字段根据名称和类型来区分②方法(M ...
- Kolla O版本部署
Kolla O版部署和之前的版本还是有些区别的,环境还是all-in-one 基本准备: 关闭Selina和firewalld [root@kolla ~]# cat /etc/redhat-rele ...
- Kubernetes网络模型概念
Kubernetes网络模型 Kubernetes网络模型设计的一个基础原则是:每个Pod都拥有一个独立的IP地址,而且假定所有Pod都在一个可以直接连通的.扁平的网络空间中.所以不管它们是否运行在同 ...
- 快速排序之C++实现
快速排序之C++实现 一趟快速排序的算法是: 1)设置两个变量i.j,排序开始的时候:i=0,j=N-1: 2)以第一个数组元素作为关键数据,赋值给key,即key=A[0]: 3)从j开始向前搜索, ...
- 浅谈 PHP 中的多种加密技术及代码示例
信息加密技术的分类 单项散列加密技术(不可逆的加密) 属于摘要算法,不是一种加密算法,作用是把任意长的输入字符串变化成固定长的输出串的一种函数 MD5 string md5 ( string $str ...
- hdu 3338 最大流 ****
题意: 黑格子右上代表该行的和,左下代表该列下的和 链接:点我 这题可以用网络流做.以空白格为节点,假设流是从左流入,从上流出的,流入的容量为行和,流出来容量为列和,其余容量不变.求满足的最大流.由于 ...
- bzoj 1336 最小圆覆盖
最小圆覆盖 问题:给定平面上的一个点集,求半径最小的一个圆,使得点集中的点都在其内部或上面. 随机增量算法: 定义:点集A的最小圆覆盖是Circle(A) 定理:如果Circle(A)=C1,且a不被 ...
- Codeforces Round #358 (Div. 2) C. Alyona and the Tree 水题
C. Alyona and the Tree 题目连接: http://www.codeforces.com/contest/682/problem/C Description Alyona deci ...
- BZOJ 1588: [HNOI2002]营业额统计 双向链表
BZOJ 1588: [HNOI2002]营业额统计 Time Limit: 5 Sec Memory Limit: 512 MBSubmit: 9619 Solved: 3287 题目连接 ht ...