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

简介:
在建立项目中一般会默认建立assets文件,当然我们还可以在res文件下面建立raw文件夹,这里面都可以存放一些图片,音频或者文本信息,可以供我们在程序当中进行使用,不过他们两个也有不同点;
assets下面的文件不会被编译,通过路径可以去访问其中的内容。raw中文件会自动编译,我们可以在R.java文件中找到对应的ID,
看下面截图:
3.gif
2012-1-19 16:42 上传
下载附件 (14.81 KB)
那么既然这样那我们平时该怎么样进行把资源放入这两个文件当中呢?
我个人平时喜欢比较文件的大小,如果文件比较大一点的会放入到aeests文件中,因为用这个文件文件当中的信息,相当于要去进行IO流操作,比较耗时的操作
其中比较重要的是获取到Assets和Raw文件夹中的资源方法:
Assets:AssetManager assetManager = getAssets();
Raw: InputStream inputStream = getResources().openRawResource(R.raw.demo);
下面该Demo的Activity源代码:
package com.jiangqq.aeesrtandraw;
 

import java.io.ByteArrayOutputStream;
 
import java.io.IOException;
 
import java.io.InputStream;
 

import android.app.Activity;
 
import android.content.res.AssetManager;
 
import android.os.Bundle;
 
import android.widget.EditText;
 

/**
 
* 该Demo演示Assets和Raw文件夹中文件的使用方法
 
* 
* @author jiangqq
 
* 
*/
 
public class AeesrtsAndRawActivity extends Activity {
 
    private EditText et1, et2;
 

    @Override
 
    public void onCreate(Bundle savedInstanceState) {
 
        super.onCreate(savedInstanceState);
 
        setContentView(R.layout.main);
 

        readAssets();
 
        readRaw();
 
    }
 

    /**
 
     * 使用Assets中的文件
 
     */
 
    private void readAssets() {
 
        et1 = (EditText) findViewById(R.id.et1);
 
        AssetManager assetManager = getAssets();
 
        try {
 
            InputStream inputStream = assetManager.open("demo.txt");
 
            et1.setText(read(inputStream));
 
        } catch (IOException e) {
 
            e.printStackTrace();
 
        }
 
    }
 

    /**
 
     * 使用Raw中的文件
 
     */
 
    private void readRaw() {
 
        et2 = (EditText) findViewById(R.id.et2);
 
        InputStream inputStream = getResources().openRawResource(R.raw.demo);
 
        et2.setText(read(inputStream));
 
    }
 

    /**
 
     * 进行IO流读写
 
     * 
     * @param inputStream
 
     * @return oStream.toString() or “文件读写失败”
 
     */
 
    private String read(InputStream inputStream) {
 

        try {
 
            ByteArrayOutputStream oStream = new ByteArrayOutputStream();
 
            int length;
 
            while ((length = inputStream.read()) != -1) {
 
                oStream.write(length);
 
            }
 
            return oStream.toString();
 
        } catch (IOException e) {
 
            return "文件读写失败";
 
        }
 
    }
 
}

布局文件:
<?xml version="1.0" encoding="utf-8"?>
 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 
    android:layout_width="fill_parent"
 
    android:layout_height="fill_parent"
 
    android:orientation="vertical" >
 

    <LinearLayout
 
        android:layout_width="fill_parent"
 
        android:layout_height="wrap_content"
 
        android:orientation="horizontal" >
 

        <TextView
 
            android:layout_width="wrap_content"
 
            android:layout_height="wrap_content"
 
            android:text="@string/et1" />
 

        <EditText
 
            android:id="@+id/et1"
 
            android:layout_width="fill_parent"
 
            android:layout_height="wrap_content" />
 
    </LinearLayout>
 

    <LinearLayout
 
        android:layout_width="fill_parent"
 
        android:layout_height="wrap_content"
 
        android:orientation="horizontal" >
 

        <TextView
 
            android:layout_width="wrap_content"
 
            android:layout_height="wrap_content"
 
            android:text="@string/et2" />
 

        <EditText
 
            android:id="@+id/et2"
 
            android:layout_width="fill_parent"
 
            android:layout_height="wrap_content" />
 
    </LinearLayout>
 

</LinearLayout>

Demo运行效果截图:
4.gif
2012-1-19 16:43 上传
下载附件 (17.68 KB)


相关文章
|
5月前
|
Android开发 开发者
Android自定义View之不得不知道的文件attrs.xml(自定义属性)
本文详细介绍了如何通过自定义 `attrs.xml` 文件实现 Android 自定义 View 的属性配置。以一个包含 TextView 和 ImageView 的 DemoView 为例,讲解了如何使用自定义属性动态改变文字内容和控制图片显示隐藏。同时,通过设置布尔值和点击事件,实现了图片状态的切换功能。代码中展示了如何在构造函数中解析自定义属性,并通过方法 `setSetting0n` 和 `setbackeguang` 实现功能逻辑的优化与封装。此示例帮助开发者更好地理解自定义 View 的开发流程与 attrs.xml 的实际应用。
Android自定义View之不得不知道的文件attrs.xml(自定义属性)
|
5月前
|
Java Android开发
Android studio中build.gradle文件简单介绍
本文解析了Android项目中build.gradle文件的作用,包括jcenter仓库配置、模块类型定义、包名设置及依赖管理,涵盖本地、库和远程依赖的区别。
457 19
|
5月前
|
存储 XML Java
Android 文件数据储存之内部储存 + 外部储存
简介:本文详细介绍了Android内部存储与外部存储的使用方法及核心原理。内部存储位于手机内存中,默认私有,适合存储SharedPreferences、SQLite数据库等重要数据,应用卸载后数据会被清除。外部存储包括公共文件和私有文件,支持SD卡或内部不可移除存储,需申请权限访问。文章通过代码示例展示了如何保存、读取、追加、删除文件以及将图片保存到系统相册的操作,帮助开发者理解存储机制并实现相关功能。
1149 2
|
存储 Android开发 数据格式
|
Android开发 数据格式 JSON
|
Android开发
android assets文件夹资源的访问
1、assets文件夹里面的文件都是保持原始的文件格式 。 2、assets中的文件只可以读取而不能进行写的操作。 3、assets目录下的资源文件不会在R.java自动生成ID,所以读取assets目录下的文件必须指定文件的路径。
2239 0
|
存储 Android开发 数据格式
Android之assets资源
assets目录下存放的原生资源文件,通过getAssets()方法获取. 使用: InputStream inputStream; try { inputStream = getAssets().
794 0
|
14天前
|
开发工具 Android开发
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
189 11
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
|
24天前
|
Java 开发工具 Maven
【01】完整的安卓二次商业实战-详细的初级步骤同步项目和gradle配置以及开发思路-优雅草伊凡
【01】完整的安卓二次商业实战-详细的初级步骤同步项目和gradle配置以及开发思路-优雅草伊凡
93 6
|
3月前
|
安全 数据库 Android开发
在Android开发中实现两个Intent跳转及数据交换的方法
总结上述内容,在Android开发中,Intent不仅是活动跳转的桥梁,也是两个活动之间进行数据交换的媒介。运用Intent传递数据时需注意数据类型、传输大小限制以及安全性问题的处理,以确保应用的健壯性和安全性。
174 11

热门文章

最新文章