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文件的方法。的更多相关文章

  1. Javascript写入txt和读取txt文件的方法

    文章主要介绍了Javascript写入txt和读取txt文件的方法,需要的朋友可以参考下1. 写入 FileSystemObject可以将文件翻译成文件流. 第一步: 例: 复制代码 代码如下: Va ...

  2. C#读取ini文件的方法

    最近项目用到ini文件,读取ini文件,方法如下: using System; using System.Collections.Generic; using System.Linq; using S ...

  3. C#中常用的几种读取XML文件的方法

    1.C#中常用的几种读取XML文件的方法:http://blog.csdn.net/tiemufeng1122/article/details/6723764/

  4. Spark Scala 读取GBK文件的方法

    1. 在生产环境下,很多文件是GBK编码格式的,而SPARK 常用的textFile方法默认是写死了读UTF-8格式的文件,其他格式文件会显示乱码 用如下代码实现读取GBK文件的方法 import o ...

  5. C#中经常使用的几种读取XML文件的方法

    XML文件是一种经常使用的文件格式,比如WinForm里面的app.config以及Web程序中的web.config文件,还有很多重要的场所都有它的身影.Xml是Internet环境中跨平台的,依赖 ...

  6. 在C#程序中,创建、写入、读取XML文件的方法

    一.在C#程序中,创建.写入.读取XML文件的方法 1.创建和读取XML文件的方法,Values为需要写入的值 private void WriteXML(string Values) { //保存的 ...

  7. pandas-19 DataFrame读取写入文件的方法

    pandas-19 DataFrame读取写入文件的方法 DataFrame有非常丰富的IO方法,比如DataFrame读写csv文件excel文件等等,操作很简单.下面在代码中标记出来一些常用的读写 ...

  8. C#三种常用的读取XML文件的方法

    下面我将介绍三种常用的读取XML文件的方法.分别是 1: 使用 XmlDocument 2: 使用 XmlTextReader 3: 使用 Linq to Xml 这里我先创建一个XML文件,名为Bo ...

  9. php中读取大文件实现方法详解

    php中读取大文件实现方法详解 来源:   时间:2013-09-05 19:27:01   阅读数:6186 分享到:0 [导读] 本文章来给各位同学介绍php中读取大文件实现方法详解吧,有需要了解 ...

随机推荐

  1. 操作系统基础知识之————单线程(Thread)与多线程的区别

    单线程(Thread)与多线程的区别 (一)首先了解一下cpu: 随着主频(cpu内核工作时钟频率,表示在CPU内数字脉冲信号震荡的速度,等于外频(系统基本时间)乘倍频)的不断攀升,X86构架的硬件逐 ...

  2. [转]瓦的VPS后台kiwivm面板使用+安装AMH+装VPN

    参考网址:http://u-lis.com/archives/4159 ZC:网页图片保存于“百度云 OsSkill --> 全部文件 > 知识__来自网页 > 瓦 > 瓦_面 ...

  3. parseInt 的第二个参数

    ["1","2","3"].map(parseInt) //[1,NaN,NaN] ["1","2" ...

  4. oracle linux 下卸载

    1. 关闭数据库 shutdown immeidate 2. 停止 Listener lsnrctl stop 3. 停止http服务(可选) service httpd stop 4. 用su或者重 ...

  5. (转)接口自动化测试 – Java+TestNG 测试 Restful Web Service

    本文主要介绍如何用Java针对Restful web service 做接口自动化测试(数据驱动),相比UI自动化,接口自动化稳定性可靠性高,实施难易程度低,做自动化性价比高.所用到的工具或类库有 T ...

  6. css + html 小知识总结

    Html+CSS基础之Html 注:本文摘自慕课网http://www.imooc.com   HTML+CSS基础课程: 1. HTML是网页内容的载体.内容就是网页制作者放在页面上想要让用户浏览的 ...

  7. JavaMail 发送邮件案例

    #----------------这两个是构建session必须的字段---------- #smtp服务器 mail.smtp.host=smtp.exmail.qq.com #身份验证 mail. ...

  8. Mybatis 级联查询 (一对多 )

    后台系统中 涉及到添加试卷 问题 答案的一个模块的.我需要通过试卷 查询出所有的试题,以及试题的答案.这个主要要使用到Mybatis的级联查询. 通过试卷 查询出与该试卷相关的试题(一对多),查询出试 ...

  9. iOS开发 创建单例模式

    + (id)defaultNSObjectName { static id defaultNSObjectName = nil; static BOOL token = NO; if (!token) ...

  10. 腾讯云从零部署nodejs站点

    版权声明:本文由袁飞翔原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/176 来源:腾云阁 https://www.qclo ...