Android - 文件操作简单总结
有时候应用程序需要保存一些数据,有如下选择:
1、保存到SD卡,有两种方式:
a、在SD卡的根目录下创建一个文件夹,用于保存数据,
b、获取SDCard/Android/data/你的应用的包名/...目录,将数据保存在里边。
首先看a方式,这会使用到Environment 类,Environment
位于android.os包下,API解释为 Provides
access to environment variables.
几个常用的方法,关于获取路径的(设备不同,获取到的值可能会有差异):
<span style="background-color: rgb(255, 255, 255);">strPath1 = Environment.getRootDirectory().getAbsolutePath(); /system strPath2 = Environment.getDataDirectory().getAbsolutePath(); /data strPath3 = Environment.getDownloadCacheDirectory().getAbsolutePath(); /cache strPath4 = Environment.getExternalStorageDirectory().getAbsolutePath(); /storage/emulated/0 strPath5 = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC).getAbsolutePath(); /storage/emulated/0/Music strPath6 = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getAbsolutePath(); /storage/emulated/0/DCIM</span>关于获取状态的:
strState = Environment.getExternalStorageState(); mounted 外部存储的状态常用的有以下几个值: MEDIA_CHECKING 正在检查 MEDIA_MOUNTED 已经挂载 MEDIA_MOUNTED_READ_ONLY 已经挂载,只读 MEDIA_REMOVED 被移除 MEDIA_UNMOUNTABLE 无法挂载 MEDIA_UNMOUNTED 没有挂载 isRemovable = Environment.isExternalStorageRemovable(); false使用a方式保存数据时,通常的做法是:
... ...
b方式会用到以下方法:
strCachePath = getExternalCacheDir().getAbsolutePath(); /storage/emulated/0/Android/data/com.hwgt.filepath/cache
strFilePath = getExternalFilesDir(null).getAbsolutePath(); /storage/emulated/0/Android/data/com.hwgt.filepath/files
strFilePath = getExternalFilesDir("test").getAbsolutePath();
/storage/emulated/0/Android/data/com.hwgt.filepath/files/test
getExternalCacheDir()方法获取到的是 SDCard/Android/data/你的应用的包名/cache目录
getExternalFilesDir()方法获取到的是SDCard/Android/data/你的应用的包名/file目录
使用a和b两种方式的区别是:
使用a方式,当应用被卸载掉之后,SD卡中的数据不会被清除,会留下垃圾数据
使用b方式,当应用被卸载掉之后,SDCard/Android/data/你的应用的包名/这个目录都会被删除
并且,可以通过 设置-应用程序管理器-应用程序信息-清除缓存(清除数据)来清除cache目录(file目录)的文件
当SD卡不可用时,使用下列方法:
strCachePath = getCacheDir().getAbsolutePath(); /data/data/com.hwgt.filepath/cache strFilePath = getFilesDir().getAbsolutePath(); /data/data/com.hwgt.filepath/files获取数据存储路径
浙公网安备 33010602011771号