res/raw文件的存放和读取

通常,如果Android开发者有些文件比如音频,视频,.html,.mp3等等这些文件不希望编译器编译而保持原始原貌打包进apk文件(这在游戏开发中很常见和普遍,如游戏用到的游戏音乐、图等资源),那么可以使用Android在res目录下的res/raw保存。res/raws目录下的文件将不被Android编译成二进制,Android将这些文件资源保持原状原封不动的打包进最终编译发布时候的apk文件。

怎样读取raw文件:

 1 package com.zzw.testraw;
 2
 3 import java.io.BufferedInputStream;
 4 import java.io.ByteArrayOutputStream;
 5 import java.io.IOException;
 6 import java.io.InputStream;
 7
 8 import android.app.Activity;
 9 import android.os.Bundle;
10 import android.util.Log;
11
12 public class MainActivity extends Activity {
13
14     private static final String TAG = "MainActivity";
15
16     @Override
17     protected void onCreate(Bundle savedInstanceState) {
18         super.onCreate(savedInstanceState);
19         // setContentView(R.layout.activity_main);
20
21         readRaw();
22     }
23
24     private void readRaw() {
25         InputStream is = getResources().openRawResource(R.raw.hello);
26
27         try {
28             byte[] data = readByteDataFromInputStream(is);
29             String content = new String(data, 0, data.length, "UTF-8");
30             Log.d(TAG, content);
31         } catch (IOException e) {
32             e.printStackTrace();
33         }
34
35     }
36
37     private byte[] readByteDataFromInputStream(InputStream is) throws IOException {
38         BufferedInputStream bis = new BufferedInputStream(is);
39
40         ByteArrayOutputStream baos = new ByteArrayOutputStream();
41
42         final int BUFFER_SIZE = 2 * 1024;
43
44         int c = 0;
45         byte[] buffer = new byte[BUFFER_SIZE];
46
47         // 写成baos.write(buffer, 0, c)的原因是写多少读多少
48         while ((c = bis.read(buffer)) != -1) {
49             baos.write(buffer, 0, c);
50             baos.flush();
51         }
52
53         byte[] data = baos.toByteArray();
54         baos.flush();
55
56         baos.close();
57         is.close();
58
59         return data;
60
61     }
62 }
时间: 2024-10-11 16:01:47

res/raw文件的存放和读取的相关文章

android开发步步为营之54:读取assets,raw文件夹下文件

一.读取assets文件下文件products.json public String readAssetFile(Context c, String file) { Elapsed profiler = new Elapsed(); BufferedReader bufReader = null; try { InputStreamReader inputReader = new InputStreamReader(c.getResources().getAssets().open(file))

android之文件操作——读取assets和raw文件下的内容

1.分别创建assets文件夹和res/raw文件夹:(要注意的raw文件是在res下new,然后创建一个名字为raw的文件夹)        2.创建两个txt文件,复制到asset和raw文件夹中: 3.实现的效果: 4.实现代码: (1)布局文件: 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.androi

assets res/raw 存放资源的限制 以及 读取方法

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

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

版权声明:本文为博主原创文章,未经博主允许不得转载. 前言 封装了以下功能: 1.读取assets目录下的资源html.文件.图片,将文件复制到SD卡目录中: 2.读取res/raw目录下的文件内容: 3.读写./data/data/包名/下的文件: 效果图 代码分析 最常用的方法:getStringFromAssert(Context mContext, String assetsFilePath)[读取assets目录中的文件字符串] 使用步骤 一.项目组织结构图 注意事项: 1.  导入类

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

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

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

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

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

android 读取raw文件

在Android平台下,除了对应用程序的私有文件夹中的文件进行操作外,还可以从资源文件和 Assets 中获得输入流读取数据,这些文件分别放在应用程序的res/raw 目录和 assets 目录下,这些文件在编译的时候和其他文件一起被打包.     需要注意的是,来自Resources和Assets 中的文件只可以读取而不能进行写的操作,下面就通过一个例子来说明如何从 Resources 和 Assets中的文件中读取信息.首先分别在res/raw 和 assets 目录下新建两个文本文件 "t

android 打开 res raw目录 中 数据库文件

韩梦飞沙  韩亚飞  [email protected]  yue31313  han_meng_fei_sha 安卓不能直接打开 res raw 中的 数据库 文件. 通过 资源 获取资源 方法 , 然后在通过 打开资产资源方法 获得 res raw中的  输入流  对象, 然后将 输入流对象 中的数据 写入 其他目录中的相应文件中. 然后 通过 sqlite数据库的 打开或者创建数据库方法  来打开任意目录中的 sqlite