應用文件API
文件目錄API層
應用文件API |
內部存貯API |
// 內部私有緩存路徑,/data/user/0/com.exam.pkg/cache (6.0之后路徑) context.getCacheDir().getPath() // 內部私有存貯路徑,/data/user/0/com.exam.pkg/files (6.0之后路徑) context.getFilesDir().getPath() |
外部存貯API |
// 外部私有目錄路徑 // /storage/emulated/0/Android/data/com.exam.pkg/files/Pictures context.getExternalFilesDir(Environment.DIRECTORY_PICTURES).getPath() // 外部私有緩存目錄路徑 // /storage/emulated/0/Android/data/com.exam.pkg/cache context.getExternalCacheDir().getPath() // 外部私有media目錄 Context#getExternalMediaDirs() |
Environment |
// 外部存貯根目錄 // /storage/emulated/0 Environment.getExternalStorageDirectory().getPath() // 外部存貯公共目錄 Environment.getExternalStoragePublicDirectory(type).getPath() |
|
|
系統版本與文件路徑
系統版本 |
外部存貯路徑 |
4.0 |
/mnt/sdcard |
4.1 |
/storage/sdcard0 |
4.2 |
/storage/sdcard0 |
4.4 |
/storage/emulated/0 |
6.0 |
/storage/emulated/0 |
|
|
系統版本 |
內部私有存貯路徑 |
4.0 |
/data/data/packname/ |
4.1 |
/data/data/packname/ |
4.2 |
/data/data/packname/ |
4.4 |
/data/data/packname/ |
6.0 |
/data/user/0/packname/ |
|
|
示例代碼
測試代碼Android6.0
/** * 安卓文件路徑整理 * Ref: * ---https://blog.csdn.net/u010937230/article/details/73303034/ * ---https://blog.csdn.net/yshxjoy/article/details/72122358 * ---https://blog.csdn.net/xiao_sier/article/details/78667149 */ public class PathUtils { /** * APP私有內部緩存目錄 * ---無ROOT權限的其他普通APP不可訪問,安全 * ---由Context提供,context提供包括package基本信息、APP應用路徑、APP資源訪問、數據存貯管理(SP、DB、文件) * ---、四大組件基本操作等服務 * ---主要用於存放緩存文件,當系統的內存存儲空間緊張時,該目錄下的文件會被刪除掉 * /data/user/0/com.simple.common/cache * * @param context * @return */ public static String getCacheDir(Context context) { return context.getCacheDir().getPath(); }
/** * APP私有內部存貯路徑 * ---無ROOT權限其他普通APP不可訪問,安全 * ---卸載應用程序時會被刪除掉 * /data/user/0/com.simple.common/files * @param context * @return */ public static String getFilesDir(Context context) { return context.getFilesDir().getPath(); }
/** * APP私有外部存貯路徑 * ---在外部存貯中,其他應用可訪問 * {@link Context#getExternalFilesDirs(String type)} * {@link Context#getExternalCacheDirs()} * {@link Context#getExternalMediaDirs()} * /storage/emulated/0/Android/data/com.simple.common/files/Pictures * @param context * @return */ public static String getExternalFilesDir(Context context) { return context.getExternalFilesDir(Environment.DIRECTORY_PICTURES).getPath(); }
/** * APP私有外部緩存目錄 * ---在外部存貯中,其他應用可訪問 * /storage/emulated/0/Android/data/com.simple.common/cache * @param context * @return */ public static String getExternalCacheDir(Context context) { return context.getExternalCacheDir().getPath(); }
/** * 外部存貯目錄 * ---由Environment提供,主要有: * ------getExternalStorageDirectory * ------getExternalStoragePublicDirectory * /storage/emulated/0 * @return */ public static String getExternalStorageDirectory() { if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { return Environment.getExternalStorageDirectory().getPath(); } else { return null; }
}
/** * 外部公共存貯目錄 * /storage/emulated/0/DCIM * @return */ public static String getExternalStoragePublicDirectory() { if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { return Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getPath(); } else { return null; }
} } |