Android 读写文件操作

来源:互联网 发布:阿里旺旺淘宝网 编辑:程序博客网 时间:2024/06/09 04:06

Android读写文件的类型可以分为三类:资源文件的读取、数据区文件的读取、SD卡文件的读取。

1、资源文件

1.1 res/raw中读取文件数据(只能读,不能写)

<span style="color:#333333;">InputStream in = getResources().openRawResource(R.raw.test);</span>
1.2  从asset中读取文件数据(只能读,不能写)
<span style="color:#333333;">InputStream in = getResources().getAssets().open(fileName);</span>

2、数据区(/data/data/<应用程序名>/)

2.1 使用Android提供的api

<span style="color:#333333;">//读文件,文件所在路径为:/data/data/<应用程序名>/files/<文件名>, fileName包含路径 FileInputStream fis = openFileInput(fileName);//写文件,文件保存路径为:/data/data/<应用程序名>/files/<文件名>,fileName包含路径,若目录不存在,需要先执行创建目录操作 FileOutputStream fout = openFileOutput(fileName, MODE_PRIVATE); </span>

需要注意,openFileOutput(String name, int mode)中mode, 一般为MODE_PRIVATE(只允许当前应用读写该文件),MODE_WORLD_READABLE(对于所有应用可读)和MODE_WORLD_WRITEABLE(对于所有应用可写)这两种模式从 API level 17(4.2)以后都是被deprecated的,显然是出于安全考虑。   

2.2 使用JDK api

<span style="color:#333333;">//读文件,文件所在路径为:/data/data/<应用程序名>/.../<文件名>, fileName 包含路径  FileInputStream fis = new FileInputStream(fileName);  //写文件,文件保存路径为:/data/data/<应用程序名>/.../<文件名>,fileName 包含路径,若目录不存在,需要先执行创建目录操作 FileOutputStream fos = new FileOutputStream(fileName); </span>

此时新建文件的读写权限是只对当前应用可读写。

3、SD卡

使用JDK api,文件保存的路径应为/sdcard/.../<文件名>,调用方式同2.2。

通过Context.getExternalFilesDir()方法可以获取到 sdcard/Android/data/你的应用的包名/files/ 目录,一般放一些长时间保存的数据。
通过Context.getExternalCacheDir()方法可以获取到 sdcard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据。

如果使用上面的方法,当你的应用在被用户卸载后,sdcard/Android/data/你的应用的包名/ 这个目录下的所有文件都会被删除,不会留下垃圾信息。
而且上面二个目录分别对应 设置->应用->应用详情里面的”清除数据“与”清除缓存“选项。


1 0
原创粉丝点击