android开发中总是有很多的资源,这些资源都是系统所依赖的,在不同的文件夹下放置不同的资源,不仅可以提高程序的清晰度,而且android 系统为我们也做了很多的事情,在不同的文件夹,android框架会为我们生成不同的内容:
Android应用资源大的方向可以分为2大类:
一、
无法从R清单类中获取到资源的原始资源类,保存在assets文件夹下,
二、
可以通过R清单获取到资源的类,保存在res文件夹下
android开发中的原生资源可以放置到两个地方,一个是在assets文件夹下,还有一种是放置到res/raw文件夹下,这个文件夹在开始创建android项目的时候是默认不建立的,需要手工去建立,因为在res文件夹下的文件会在R类中生成对应的ID,进而可以通过ID来进行查找相应的资源,所以放置的位置不同,使用的方式也不太一样,从大方面来说,因为都是原始资源类,所以都是需要通过流的形式进入程序中进行显示的,不同就是在获取流的方式上,这也是android框架做的一些事情:
assert文件夹下的文件
package com.xu.dbtest.io;
import android.content.Context;
import android.util.Log;
import com.xu.dbtest.R;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* Created by Administrator on 2015/5/5.
*/
public class OriginResources {
private Context context;
public OriginResources(Context context) {
this.context = context;
}
public void getResFormAssets() {
try {
InputStreamReader inputStreamReader = new InputStreamReader(context.getAssets().open("xushuangshuang.txt"));
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String line = "";
String result = "";
while ((line = bufferedReader.readLine()) != null) {
result += line;
}
Log.e("test getResFormAssets", result);
} catch (IOException e) {
e.printStackTrace();
}
}
public void getResFormRaw() {
InputStreamReader inputStreamReader = new InputStreamReader(context.getResources().openRawResource(R.raw.xushuangshuang));
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String line = "";
String result = "";
try {
while ((line = bufferedReader.readLine()) != null) {
result += line;
}
Log.e("test getResFormRaw", result);
} catch (IOException e) {
e.printStackTrace();
}
}
}
执行结果:
因为我使用的是android studio所以我的目录结构:
gradle进行目录结构的生成,
两种阅读的方式,在android环境下,框架已经为我们做了很多事情了