Android文件管理
最近研究Android缓存管理,需要用到Android文件操作,所以把经验分享一下。
一、Android默认系统路径
Environment.getDataDirectory().getPath() : /data
Environment.getDownloadCacheDirectory().getPath() : /cache
Environment.getExternalStorageDirectory().getPath(): /mnt/sdcard
Environment.getRootDirectory().getPath() : /system
Context.getCacheDir().getPath() : /data/data/com.zhd/cache
Context.getExternalCacheDir().getPath() : /mnt/sdcard/Android/data/com.zhd/cache
Context.getFilesDir().getPath() : /data/data/com.zhd/files
Context.getObbDir().getPath() : /mnt/sdcard/Android/obb/com.zhd
Context.getPackageName() : com.zhd
Context.getPackageCodePath() : /data/app/com.zhd-1.apk
Context.getPackageResourcePath() : /data/app/com.zhd-1.apk
二、缓存目录选择
1、通过Context.getExternalFilesDir()获取到SDCard/Android/data/你的应用的包名/files/ 目录,一般放一些长时间保存的数据。
2、通过Context.getExternalCacheDir()方法可以获取到 SDCard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据。
3、Context.getFilesDir()可以获取到”/data/data//files” 这个方法获取的目录不是在sdcard上,而是在应用安装的目录
4、Context.getCacheDir可以获取到”/data/data//cache” 这个方法获取的目录不是在sdcard上,而是在应用安装的目录,这个文件里面的数据在设备内存不足的时候,会被系统删除数据。注意:你不能依赖系统帮你删除这些文件,当这个文件夹里面的数据超过1MB的时候,系统会删除这个文件夹里面的数据。
例子
这里写代码片
public static final void saveObject(String path, Object saveObject) {
FileOutputStream fos = null;
ObjectOutputStream oos = null;
path = Context.getExternalCacheDir()+user.txt;
File f = new File(path);
try {
fos = new FileOutputStream(f);
oos = new ObjectOutputStream(fos);
oos.writeObject(saveObject);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (oos != null) {
oos.close();
}
if (fos != null) {
fos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}