安卓-APP應用檔案路徑
應用檔案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; }
} } |