1. 程式人生 > >Android系統檔案目錄路徑說明

Android系統檔案目錄路徑說明

資料儲存路徑,如下:其中應用程式包名為:com.spt

ContextWrapper類中,包含以下方法

  1. getFilesDir() --> 內部儲存
@Override
public File getFilesDir() {
    return mBase.getFilesDir();
}

k86m_QC機器上資料儲存路徑:/data/data/com.spt/files

華為手機上資料儲存路徑:/data/data/com.spt/files

  1. getExternalFilesDir(String type) 引數指定為:Environment.DIRECTORY_PICTURES --> 外部儲存
@Override
public File getExternalFilesDir(String type) {
    return mBase.getExternalFilesDir(type);
}

k86m_QC機器上資料儲存路徑:/storage/sdcard0/Android/data/com.spt/files/Pictures

華為手機上資料儲存路徑:/storage/emulated/0/Android/data/com.spt/files/Pictures

  1. getCacheDir() --> 內部儲存
@Override
public File getCacheDir() {
    return
mBase.getCacheDir(); }

k86m_QC機器上資料儲存路徑:/data/data/com.spt/cache

華為手機上資料儲存路徑:/data/data/com.spt/cache

  1. getExternalCacheDir() --> 外部儲存
@Override
public File getExternalCacheDir() {
    return mBase.getExternalCacheDir();
}

k86m_QC機器上資料儲存路徑:/storage/sdcard0/Android/data/com.spt/cache

華為手機上資料儲存路徑:/storage/emulated/0/Android/data/com.spt/cache

Environment類中,包含以下方法:

  1. getDataDirctory()
/**
 * Return the user data directory.
 */
public static File getDataDirectory() {
    return DATA_DIRECTORY;
}

k86m_QC機器上資料儲存路徑:/data

華為手機上資料儲存路徑:/data

  1. getDownLoadCacheDirectory()
/**
 * Return the download/cache content directory.
 */
public static File getDownloadCacheDirectory() {
    return DOWNLOAD_CACHE_DIRECTORY;
}

k86m_QC機器上資料儲存路徑:/cache

華為手機上資料儲存路徑:/cache

  1. getExternalStorageDirectory()
/**
 * Return the primary external storage directory. This directory may not
 * currently be accessible if it has been mounted by the user on their
 * computer, has been removed from the device, or some other problem has
 * happened. You can determine its current state with
 * {@link #getExternalStorageState()}.
 * <p>
 * <em>Note: don't be confused by the word "external" here. This directory
 * can better be thought as media/shared storage. It is a filesystem that
 * can hold a relatively large amount of data and that is shared across all
 * applications (does not enforce permissions). Traditionally this is an SD
 * card, but it may also be implemented as built-in storage in a device that
 * is distinct from the protected internal storage and can be mounted as a
 * filesystem on a computer.</em>
 * <p>
 * On devices with multiple users (as described by {@link UserManager}),
 * each user has their own isolated external storage. Applications only have
 * access to the external storage for the user they're running as.
 * <p>
 * In devices with multiple "external" storage directories, this directory
 * represents the "primary" external storage that the user will interact
 * with. Access to secondary storage is available through
 * <p>
 * Applications should not directly use this top-level directory, in order
 * to avoid polluting the user's root namespace. Any files that are private
 * to the application should be placed in a directory returned by
 * {@link android.content.Context#getExternalFilesDir
 * Context.getExternalFilesDir}, which the system will take care of deleting
 * if the application is uninstalled. Other shared files should be placed in
 * one of the directories returned by
 * {@link #getExternalStoragePublicDirectory}.
 * <p>
 * Writing to this path requires the
 * {@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE} permission,
 * and starting in read access requires the
 * {@link android.Manifest.permission#READ_EXTERNAL_STORAGE} permission,
 * which is automatically granted if you hold the write permission.
 * <p>
 * Starting in {@link android.os.Build.VERSION_CODES#KITKAT}, if your
 * application only needs to store internal data, consider using
 * {@link Context#getExternalFilesDir(String)} or
 * {@link Context#getExternalCacheDir()}, which require no permissions to
 * read or write.
 * <p>
 * This path may change between platform versions, so applications should
 * only persist relative paths.
 * <p>
 * Here is an example of typical code to monitor the state of external
 * storage:
 * <p>
 * {@sample
 * development/samples/ApiDemos/src/com/example/android/apis/content/ExternalStorage.java
 * monitor_storage}
 *
 * @see #getExternalStorageState()
 * @see #isExternalStorageRemovable()
 */
public static File getExternalStorageDirectory() {
    throwIfUserRequired();
    return sCurrentUser.getExternalDirsForApp()[0];
}

k86m_QC機器上資料儲存路徑:/storage/sdcard0

華為手機上資料儲存路徑:/storage/emulated/0

  1. getRootDirectory()
/**
 * Return root of the "system" partition holding the core Android OS.
 * Always present and mounted read-only.
 */
public static File getRootDirectory() {
    return DIR_ANDROID_ROOT;
}

k86m_QC機器上資料儲存路徑:/system

華為手機上資料儲存路徑:/system

  1. getExternalStoragePublicDirectory(String type)
/**
 * Get a top-level public external storage directory for placing files of
 * a particular type.  This is where the user will typically place and
 * manage their own files, so you should be careful about what you put here
 * to ensure you don't erase their files or get in the way of their own
 * organization.
 *
 * <p>On devices with multiple users (as described by {@link UserManager}),
 * each user has their own isolated external storage. Applications only
 * have access to the external storage for the user they're running as.</p>
 *
 * <p>Here is an example of typical code to manipulate a picture on
 * the public external storage:</p>
 *
 * {@sample development/samples/ApiDemos/src/com/example/android/apis/content/ExternalStorage.java
 * public_picture}
 *
 * @param type The type of storage directory to return.  Should be one of
 * {@link #DIRECTORY_MUSIC}, {@link #DIRECTORY_PODCASTS},
 * {@link #DIRECTORY_RINGTONES}, {@link #DIRECTORY_ALARMS},
 * {@link #DIRECTORY_NOTIFICATIONS}, {@link #DIRECTORY_PICTURES},
 * {@link #DIRECTORY_MOVIES}, {@link #DIRECTORY_DOWNLOADS}, or
 * {@link #DIRECTORY_DCIM}.  May not be null.
 *
 * @return Returns the File path for the directory.  Note that this
 * directory may not yet exist, so you must make sure it exists before
 * using it such as with {@link File#mkdirs File.mkdirs()}.
 */
public static File getExternalStoragePublicDirectory(String type) {
    throwIfUserRequired();
    return sCurrentUser.buildExternalStoragePublicDirs(type)[0];
}

k86m_QC機器上資料儲存路徑:/storage/sdcard0/Pictures

華為手機上資料儲存路徑:/storage/emulated/0/Pictures

Internal Storage和External Storage的區別:

這裡寫圖片描述

getFilesDir() --> 內部儲存 /data/data/com.spt/files

getCacheDir() --> 內部儲存 /data/data/com.spt/cache

內部儲存,對應的是特定的應用程式,如上所述指的是包名為:com.spt應用程式

getExternalFilesDir(String type) --> 外部儲存 /storage/sdcard0/Android/data/com.spt/files/Pictures

getExternalCacheDir() --> 外部儲存 /storage/sdcard0/Android/data/com.spt/cache

getExternalStoragePublicDirectory(String type) --> 外部儲存 /storage/sdcard0/Pictures

getExternalStorageDirectory() --> 外部儲存 /storage/sdcard0

1 外部儲存,對應的是/storage/sdcard0/目錄;

2 private files:如果需要在解除安裝應用程式時,刪除所有該應用程式的外部儲存(同時,該資料是本應用程式私有的),可以使用:getExternalFilesDir(String type)目錄,帶有應用程式包名;

這裡寫圖片描述

3 public files可以存放在:getExternalStoragePublicDirectory(String type)

P.S.

對於特定的智慧後視鏡裝置:Flash --> /mnt/sdcard 硬碟大小 外部儲存路徑:/storage/sdcard1" 外設的儲存裝置