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

在建立项目中一般会默认建立assets文件,当然我们还可以在res文件下面建立raw文件夹,这里面都可以存放一些图片,音频或者文本信息,可以供我们在程序当中进行使用,不过他们两个也有不同点;

assets下面的文件不会被编译,通过路径可以去访问其中的内容。raw中文件会自动编译,我们可以在R.java文件中找到对应的ID,

看下面截图:

那么既然这样那我们平时该怎么样进行把资源放入这两个文件当中呢?

我个人平时喜欢比较文件的大小,如果文件比较大一点的会放入到aeests文件中,因为用这个文件文件当中的信息,相当于要去进行IO流操作,比较耗时的操作

其中比较重要的是获取到Assets和Raw文件夹中的资源方法:

Assets:AssetManager assetManager = getAssets();

Raw:        InputStream inputStream = getResources().openRawResource(R.raw.demo);

下面该Demo的Activity源代码:

[java] view plaincopy

  1. package com.jiangqq.aeesrtandraw;
  2. import java.io.ByteArrayOutputStream;
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import android.app.Activity;
  6. import android.content.res.AssetManager;
  7. import android.os.Bundle;
  8. import android.widget.EditText;
  9. /**
  10. * 该Demo演示Assets和Raw文件夹中文件的使用方法
  11. *
  12. * @author jiangqq
  13. *
  14. */
  15. public class AeesrtsAndRawActivity extends Activity {
  16. private EditText et1, et2;
  17. @Override
  18. public void onCreate(Bundle savedInstanceState) {
  19. super.onCreate(savedInstanceState);
  20. setContentView(R.layout.main);
  21. readAssets();
  22. readRaw();
  23. }
  24. /**
  25. * 使用Assets中的文件
  26. */
  27. private void readAssets() {
  28. et1 = (EditText) findViewById(R.id.et1);
  29. AssetManager assetManager = getAssets();
  30. try {
  31. InputStream inputStream = assetManager.open("demo.txt");
  32. et1.setText(read(inputStream));
  33. } catch (IOException e) {
  34. e.printStackTrace();
  35. }
  36. }
  37. /**
  38. * 使用Raw中的文件
  39. */
  40. private void readRaw() {
  41. et2 = (EditText) findViewById(R.id.et2);
  42. InputStream inputStream = getResources().openRawResource(R.raw.demo);
  43. et2.setText(read(inputStream));
  44. }
  45. /**
  46. * 进行IO流读写
  47. *
  48. * @param inputStream
  49. * @return oStream.toString() or “文件读写失败”
  50. */
  51. private String read(InputStream inputStream) {
  52. try {
  53. ByteArrayOutputStream oStream = new ByteArrayOutputStream();
  54. int length;
  55. while ((length = inputStream.read()) != -1) {
  56. oStream.write(length);
  57. }
  58. return oStream.toString();
  59. } catch (IOException e) {
  60. return "文件读写失败";
  61. }
  62. }
  63. }

布局文件:

[html] view plaincopy

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:orientation="vertical" >
  6. <LinearLayout
  7. android:layout_width="fill_parent"
  8. android:layout_height="wrap_content"
  9. android:orientation="horizontal" >
  10. <TextView
  11. android:layout_width="wrap_content"
  12. android:layout_height="wrap_content"
  13. android:text="@string/et1" />
  14. <EditText
  15. android:id="@+id/et1"
  16. android:layout_width="fill_parent"
  17. android:layout_height="wrap_content" />
  18. </LinearLayout>
  19. <LinearLayout
  20. android:layout_width="fill_parent"
  21. android:layout_height="wrap_content"
  22. android:orientation="horizontal" >
  23. <TextView
  24. android:layout_width="wrap_content"
  25. android:layout_height="wrap_content"
  26. android:text="@string/et2" />
  27. <EditText
  28. android:id="@+id/et2"
  29. android:layout_width="fill_parent"
  30. android:layout_height="wrap_content" />
  31. </LinearLayout>
  32. </LinearLayout>

Demo运行效果截图:

时间: 2024-10-12 10:44:50

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

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

android资源目录---assets与res/raw的不同 Android 2011-05-24 14:40:21 阅读20 评论0   字号:大中小 订阅 assets:用于存放需要打包到应用程序的静态文件,以便部署到设备中.与res/raw不同点在于,ASSETS支持任意深度的子目录.这些文件不会生成任何资源ID,必须使用/assets开始(不包含它)的相对路径名. res:用于存放应用程序的资源(如图标.GUI布局等),将被打包到编译后的Java中.不支持深度子目录 res/menu:

android 从assets和res中读取文件(转)

1. 相关文件夹介绍 在Android项目文件夹里面,主要的资源文件是放在res文件夹里面的.assets文件夹是存放不进行编译加工的原生文件,即该文件夹里面的文件不会像xml,java文件被预编译,可以存放一些图片,html,js, css等文件.在后面会介绍如何读取assets文件夹的资源! res文件夹里面的多个文件夹的各自介绍(来自网上的Android开发指南中文版内容): 目录Directory 资源类型Resource Types res/anim/ XML文件,它们被编译进逐帧动画

android 从assets和res中读取文件

11. assets文件夹资源的访问 assets文件夹里面的文件都是保持原始的文件格式,需要用AssetManager以字节流的形式读取文件. 1. 先在Activity里面调用getAssets()来获取AssetManager引用. 2. 再用AssetManager的open(String fileName, int accessMode)方法则指定读取的文件以及访问模式就能得到输入流InputStream. 3. 然后就是用已经open file 的inputStream读取文件,读取

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

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

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

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

Android : assets与res/raw资源目录的区别 Author : Aoyousatuo Zhao http://blog.sina.com.cn/aoyousatuo 一,简介 在应用的开发中,当我们创建一个新的Android工程后,我们会发现工程中包含了一个目录assets,另外当我们察看一些示例工程的时候,有时会发 现在该工程的资源目录下会有一个raw目录(res/raw).那么assets和raw目录有什么用处呢?下面笔者将给与解释. 二,相同 assets和res/raw

转 Android raw文件与assets文件区别

*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工程文件下assets文件夹与res文件夹的区别

1.assets:不会在R.java文件下生成相应的标记,assets文件夹可以自己创建文件夹,必须使用AssetsManager类进行访问,存放到这里的资源在运行打包的时候都会打入程序安装包中, 2.res:会在R.java文件下生成标记,这里的资源会在运行打包操作的时候判断哪些被使用到了,没有被使用到的文件资源是不会打包到安装包中的. res/raw和assets文件夹来存放不需要系统编译成二进制的文件,例如字体文件等 在res文件夹下还可以定义一下目录: res/anim:这里存放的是动画

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))