一,android几种文件获取:
1,应用所有的file,其他进程不能直接访问,应用卸载时会删除.
存在路径:data/data/com.android.phone/files/xxx
API:
Context.openFileInput(String name) //return FileInputStream
Context.openFileOutput(Sring name) //return FileOutPutStream
Context.getFilesDir(); //return "data/data/com.android.phone/files/"
Context.fileList();//列出data/data/com.android.phone/files/下的所有文件
Context.deleteFile(String name)://删除data/data/com.android.phone/files/下的name文件
2,Assets中的文件数据.
在asset目录下的资源是无法直接访问的原生资源,但是这个目录保存的文件可以打包在程序里,Android应用通过Assetmanager来管理该目录下的原始资源.
Android不为Assets下的文件生成id,如要使用assets里的文件,需要指定文件的路径和文件名。
存在路径: 应用资源包下的Assets目录
API: InputStream is=getResources().getAssets().open("info.txt");
3,res/raw/目录目录中的文件数据
如果你想要将静态文件保存在您的应用程序在编译时,将文件保存在您的项目res/raw/目录。Android SDK会处理该目录下原始资源,并会在R清单类中为该目录下的资源生成一个索引项。
你可以打开它与openRawResource(),通过R.raw.<filename>的资源 id。此方法返回的InputStream,您可以使用读取该文件 (但你不能写入原始文件)。
API: InputStream is=getResources().openRawResource(R.raw.info);
4,读写外部存储的文件数据
这可以是一个可移动存储媒体 (如 SD 卡) 或内部的 (非可移动) 存储。保存
到外部存储的文件是可读的世界,所有应用都可读写,可以由用户修改。
API:
Environment.getExternalStorageState()//return Environment.MEDIA_MOUNTED
Environment.getExternalStorageDirectory()//return "/sdcard"
Need Permission:
<!-- 在SD卡中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 向SD卡写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>