Android数据存储之——操作raw和assets目录下的文件

时间:2021-10-01 08:21:11
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、读取res/raw下的文件资源:

InputStream is = getResources().openRawResource(R.raw.info);
try {
InputStreamReader isr = new InputStreamReader(is, "UTF-8");
BufferedReader br = new BufferedReader(isr);
String string = "";
while ((string = br.readLine()) != null) {
textView.setText(textView.getText() + "\n" + string);
}
} catch (UnsupportedEncodingException e) {

e.printStackTrace();
} catch (IOException e) {

e.printStackTrace();
}<strong>
</strong>
2、读取assets下的文件资源:

textView = (TextView) findViewById(R.id.textView1);
try {
InputStream stream = getResources().getAssets().open("info.txt");
InputStreamReader isr = new InputStreamReader(stream, "UTF-8");
BufferedReader br = new BufferedReader(isr);
String string = "";
while ((string = br.readLine()) != null) {
textView.setText(textView.getText() + "\n" + string);
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}