Android 的assets文件资源与raw文件资源读取
2024-08-28 21:34:25
版权声明:本文为博主原创文章,未经博主同意不得转载。
https://blog.csdn.net/zpf8861/article/details/34504183
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.id.filename);
2.读取assets下的文件资源,通过下面方式获取输入流来进行写操作
- AssetManager
am = null; - am = getAssets();
- InputStream
is = am.open("filename");
assets文件夹里面的文件都是保持原始的文件格式,须要用AssetManager以字节流的形式读取文件。
1. 先在Activity里面调用getAssets() 来获取AssetManager引用。
2. 再用AssetManager的open(String fileName, int accessMode) 方法则指定读取的文件以及訪问模式就能得到输入流InputStream。
3. 然后就是用已经open file 的inputStream读取文件。读取完毕后记得inputStream.close() 。
4.调用AssetManager.close() 关闭AssetManager。
须要注意的是。来自Resources和Assets 中的文件仅仅能够读取而不能进行写的操作
下面为Assets文件里读取:
public class ReadAsset extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.read_asset);
try {
InputStream is = getAssets().open("read_asset.txt");//文件夹下的一个二进制文件
int size = is.available();
// Read the entire asset into a local byte buffer.
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
// Convert the buffer into a string.
String text = new String(buffer);
// Finally stick the string into the text view.
TextView tv = (TextView)findViewById(R.id.text);
tv.setText(text);
} catch (IOException e) {
// Should never happen!
throw new RuntimeException(e);
}
}
}
下面为从Raw文件里读取:
public String getFromRaw(){
try {
InputStreamReader inputReader = new InputStreamReader( getResources().openRawResource(R.raw.test1));
BufferedReader bufReader = new BufferedReader(inputReader);
String line="";
String Result="";
while((line = bufReader.readLine()) != null)
Result += line;
return Result;
} catch (Exception e) {
e.printStackTrace();
}
}
最新文章
- mysql-5.6.34 Installation from Source code
- mysql基础知识扫盲
- 实操UNITY3D接入91SDK安卓版
- Exception在方法继承中的限制
- Codeforces Round #366 (Div. 2) A
- ORACLE-树状数据结构获取各层级节点信息
- pflua:用Lua编写的高性能网络包过滤工具箱
- MongoDB性能优化指南
- Android 一个抽奖应用的逆向破解全流程之加固自己应用
- - (BOOL)setResourceValue:(id)value forKey:(NSString *)key error:(NSError **)error
- Android-Async-Http 特性简单分析
- using eclipse to write c programe 0
- 1.3 正则表达式和python语言-1.3.8 创建字符集([ ])
- 打造自己Django博客日记
- python sqlite3查看数据库所有表(table)
- HTML知识基础
- 用dataset保存数据注意的问题
- Netty源码分析第4章(pipeline)---->;第2节: handler的添加
- HackRF 无线门铃信号录制与重放
- Github优秀开源项目