读取raw文件的方法。
Android开发者有些文件比如音频,视频,.html,.mp3等等这些文件不希望编译器编译而保持原始原貌打包进apk文件(这在游戏开发中很常见和普遍,如游戏用到的游戏音乐、图等资源),那么可以使用Android在res目录下的res/raw和assets来保存。res/raw和assets目录下的文件将不被Android编译成二进制,Android将这些文件资源保持原状原封不动的打包进最终编译发布时候的apk文件。
res/raw和res/assets和既有相同点也有不同点。
(1)res/raw目录下的文件将被Android映射成R.id.xxx资源,访问该raw目录下的文件资源,可以通过R.id.filename获得映射,进而文件操作。但res/assets则不是这样,res/assets目录下的文件不会进行R.id. filename这样的映射,res/assets目录下的文件存放和访问模型与Java文件系统的读写模型类似。
(2)assets目录下的文件结构可以出现层级和树形结构;而res/raw则不能分层级。换句话说,可以在assets建立多层级、树形的文件目录结构,而res/raw下的文件资源必须平铺放在res/raw目录下。
(3)文件大小方面。在res/raw目录下的单个文件大小可以大到若干MB的尺寸,但res/assets文件目录下的单个文件大小尺寸尽量控制在MB量级以下,否则可能要出问题。
(4)res/assets目录下的文件资源访问一般是这样(如附录文章1所示):
AssetManager am=getAssets();
InputStream is=am.open("filename");
即通过AssetManager访问res/assets目录下资源。
res/raw目录下的文件资源访问一般是这样:
InputStream is =getResources().openRawResource(R.id.filename);
res/raw目录下的文件资源也可以通过这样先获得URI定位:
Uri uri= Uri.parse("android.resource://"+getPackageName()+"/"+ R.raw.filename);
package com.lixu.rawduxie; import java.io.BufferedInputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast; public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); readraw();
} private void readraw() {
// 从raw文件读取文件的字节流
InputStream is = getResources().openRawResource(R.raw.lixutxt); try {
byte[] buffer = readByteFromInputstream(is);
String s = new String(buffer, 0, buffer.length, "UTF-8");
Toast.makeText(getApplicationContext(), s, 0).show(); } catch (IOException e) {
e.printStackTrace();
} } private byte[] readByteFromInputstream(InputStream is) throws IOException { BufferedInputStream bis = new BufferedInputStream(is); ByteArrayOutputStream baos = new ByteArrayOutputStream(); int BYTE_SIZE = 2 * 1024;
//创建字节数组作为缓存
byte[] b = new byte[BYTE_SIZE]; int c;
//c = bis.read(b)将字节流读出后放入字节数组b中,baos.write(b, 0, c);读取多少就写入多少
while ((c = bis.read(b)) != -1) {
baos.write(b, 0, c);
baos.flush();
}
//将字节数组流转换成字节数组
byte[] date = baos.toByteArray(); is.close();
baos.close(); return date; } }
读取raw文件的方法。的更多相关文章
- Javascript写入txt和读取txt文件的方法
文章主要介绍了Javascript写入txt和读取txt文件的方法,需要的朋友可以参考下1. 写入 FileSystemObject可以将文件翻译成文件流. 第一步: 例: 复制代码 代码如下: Va ...
- C#读取ini文件的方法
最近项目用到ini文件,读取ini文件,方法如下: using System; using System.Collections.Generic; using System.Linq; using S ...
- C#中常用的几种读取XML文件的方法
1.C#中常用的几种读取XML文件的方法:http://blog.csdn.net/tiemufeng1122/article/details/6723764/
- Spark Scala 读取GBK文件的方法
1. 在生产环境下,很多文件是GBK编码格式的,而SPARK 常用的textFile方法默认是写死了读UTF-8格式的文件,其他格式文件会显示乱码 用如下代码实现读取GBK文件的方法 import o ...
- C#中经常使用的几种读取XML文件的方法
XML文件是一种经常使用的文件格式,比如WinForm里面的app.config以及Web程序中的web.config文件,还有很多重要的场所都有它的身影.Xml是Internet环境中跨平台的,依赖 ...
- 在C#程序中,创建、写入、读取XML文件的方法
一.在C#程序中,创建.写入.读取XML文件的方法 1.创建和读取XML文件的方法,Values为需要写入的值 private void WriteXML(string Values) { //保存的 ...
- pandas-19 DataFrame读取写入文件的方法
pandas-19 DataFrame读取写入文件的方法 DataFrame有非常丰富的IO方法,比如DataFrame读写csv文件excel文件等等,操作很简单.下面在代码中标记出来一些常用的读写 ...
- C#三种常用的读取XML文件的方法
下面我将介绍三种常用的读取XML文件的方法.分别是 1: 使用 XmlDocument 2: 使用 XmlTextReader 3: 使用 Linq to Xml 这里我先创建一个XML文件,名为Bo ...
- php中读取大文件实现方法详解
php中读取大文件实现方法详解 来源: 时间:2013-09-05 19:27:01 阅读数:6186 分享到:0 [导读] 本文章来给各位同学介绍php中读取大文件实现方法详解吧,有需要了解 ...
随机推荐
- iOS - OC 术语表
1.术语表
- 刻录DVD_待整理
1.各种 IDE 2. 3. 4. 5.
- Linux_文档编辑器_简介
1. vi 2. vim 3. ubuntu 有一个 自己的图形化的 文档编辑器,用起来比较方便: gedit 4. 5.
- html,CSS文字大小单位px、em、pt的关系换算
html,CSS文字大小单位px.em.pt的关系换算 这里引用的是Jorux的“95%的中国网站需要重写CSS”的文章,题目有点吓人,但是确实是现在国内网页制作方面的一些缺陷.我一直也搞不清楚px与 ...
- poj2074Line of Sight(直线相交)
链接 几何细节题. 对于每一个障碍物可以求出它在地产线上的覆盖区间,如下图. 紫色部分即为每个障碍物所覆盖掉的区间,求出所有的,扫描一遍即可. 几个需要注意的地方:直线可能与地产线没有交点,可视区间可 ...
- Java源码初学_LinkedList
一.LinkedList的内部数据结构 LinkedList底层是一个链表的数据结构,采用的是双向链表,基本的Node数据结构代码如下: private static class Node<E& ...
- Echarts柱形图颜色设置
ECharts图为每个数据项配置颜色 (2014-11-12 15:52:53) 转载▼ 标签: 时尚 分类: 开发学习 其实给每个数据项配置很简单 只需要在series里面给data数组的每个元素设 ...
- java源程序---可执行文件(.exe)----安装包
众所周知,java源程序都可以导出为(executable jar file)可执行的.jar文件,但是该.jar文件需要在jre环境下才能执行. 那么如何能在没有装jre的电脑上运行呢?(那就要顺带 ...
- C# 中的弱引用 WeakReference
C#中的弱引用(WeakReference) 我们平常用的都是对象的强引用,如果有强引用存在,GC是不会回收对象的.我们能不能同时保持对对象的引用,而又可以让GC需要的时候回收这个对象呢?.NET ...
- Python开发简单爬虫 - 慕课网
课程链接:Python开发简单爬虫 环境搭建: Eclipse+PyDev配置搭建Python开发环境 Python入门基础教程 用Eclipse编写Python程序 课程目录 第1章 课程介绍 ...