1. 程式人生 > >安卓-APP應用檔案路徑

安卓-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;

        }

 

    }

}