在建立项目中一般会默认建立assets文件,
当然我们还可以在res文件下面建立raw文件夹,
这里面都可以存放一些图片,音频或者文本信息,
可以供我们在程序当中进行使用,不过他们两个也有不同点;
assets下面的文件不会被编译,通过路径可以去访问其中的内容。
raw中文件会自动编译,我们可以在R.java文件中找到对应的ID,
Raw目录和Assets目录的区别
1.Raw目录下的文件可以映射到R文件中,Assets目录不可以
2.Raw目录下文件通过Resources类来获取,
Assets目录下的文件通过AssetsManager类来获取
3.Raw目录下不可以再创建文件夹,Assets目录可以
4.Raw目录和Assets目录都是原生资源,在Apk打包时不会编译成二进制文件。
代码
// 1.获取AssetsManager对象
AssetManager assetManager = getAssets();
try {
// 2.通过AssetsManager对象的open来获取文件名对应的输入流
InputStream is = assetManager.open("aa/test2.txt");
// 3.将流转为字符串
BufferedReader br = new BufferedReader(new InputStreamReader(is, "gbk"));
StringBuffer sb = new StringBuffer();
String line = null;
while ((line = br.readLine()) != null) {
sb.append(line);
}
// 将读取到的内容吐司出来
Toast.makeText(this, sb.toString(), Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
}
// 1.获取raw目录下的文件,需要用到资源管理类
Resources resources = getResources();
// 2.通过Resources对象的openRawResource(R.raw.test) 获取到指定的文件对应的流
InputStream is = resources.openRawResource(R.raw.test);
// 3.将流转为字符串
try {
BufferedReader br = new BufferedReader(new InputStreamReader(is, "gbk"));
StringBuffer sb = new StringBuffer();
String line = null;
while ((line = br.readLine()) != null) {
sb.append(line);
}
// 将读取到的内容吐司出来
Toast.makeText(this, sb.toString(), Toast.LENGTH_SHORT).show();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
网友评论