Android 的assets文件资源与raw文件资源读取
2014-06-25 20:40
387 查看
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文件中读取:
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(); } }
相关文章推荐
- Android apk安装过程及Java、JNI读取安装包内assets资源文件的两种方法(附源码实例)
- ListView,文件读取,android assets资源,图像读取,java 字符编码
- android常见问题之jni读取assets资源文件
- Android 读取Assets资源文件或目录,并拷贝到其他目录下
- Android 读取Assets下的资源文件
- (转)android常见问题之jni读取assets资源文件(附源码)
- android常见问题之jni读取assets资源文件(附源码)
- android常见问题之jni读取assets资源文件
- Android apk安装过程及Java、JNI读取安装包内assets资源文件的两种方法(附源码实例)
- Android学习第二课:Assets资源文件读取及AssetManager介绍
- [AndroidTips]jni读取assets资源文件
- android开发--- jni读取assets资源文件
- Android 读取资源文件(assets 文件夹 或res文件夹 )下面的文件
- android 读取assets文件夹下的文件资源
- android原始资源raw和assets文件读取
- android文件操作――读取assets和raw文件下的内容
- Android中assets目录和raw目录的区别及其中properties资源文件的读取
- Android:读取assets资源
- 读取android项目中的文件(可以读取assets文件夹或在res文件夹中raw中的文件)
- android中需要读取assets目录下a.txt文件并进行解析