Skip to content

Latest commit

 

History

History
103 lines (91 loc) · 3.98 KB

StoragePath.md

File metadata and controls

103 lines (91 loc) · 3.98 KB

外部储存

可以在手机中直接查看的目录,目录为Android/data//xxx 下的系列文件

传入的参数不要以“/”开始

//主要对应Android/data/<package name>/files/下的文件目录,传入空则为根目录
val externalFilesDir = getExternalFilesDir("plugin/app-debug.apk")
//path: /storage/emulated/0/Android/data/com.jiangker.testapplication/files/plugin/app-debug.apk
Log.i(TAG, "path: ${externalFilesDir?.path}")
//name: app-debug.apk
Log.i(TAG, "name: ${externalFilesDir?.name}")
//absolutePath: /storage/emulated/0/Android/data/com.jiangker.testapplication/files/plugin/app-debug.apk
Log.i(TAG, "absolutePath: ${externalFilesDir?.absolutePath}")
//canonicalPath: /storage/emulated/0/Android/data/com.jiangker.testapplication/files/plugin/app-debug.apk
Log.i(TAG, "canonicalPath: ${externalFilesDir?.canonicalPath}")

另外还有缓存目录

//主要对应Android/data/<package name>/cache/下的文件目录
val externalCacheDir = externalCacheDir

内部储存

只能在as中看到的目录,对应在/data/data// 下的系列文件

对应的sp目录也是在这个下,对应/data/data//shared_prefs/

  • getDir(String name, int mode)方法
//调用这个方法会在根目录下生成一个文件夹,在对应的名字前会加上app_,现在模式只有这一个可以使用了
val dir = getDir("pulgin", Context.MODE_PRIVATE)
//path: /data/user/0/com.jiangker.testapplication/app_pulgin
Log.i(TAG, "path: ${dir?.path}")
//name: app_pulgin
Log.i(TAG, "name: ${dir?.name}")
//absolutePath: /data/user/0/com.jiangker.testapplication/app_pulgin
Log.i(TAG, "absolutePath: ${dir?.absolutePath}")
//canonicalPath: /data/data/com.jiangker.testapplication/app_pulgin
Log.i(TAG, "canonicalPath: ${dir?.canonicalPath}")
  • getCacheDir()方法
//直接获取其下的cache目录
val dir = cacheDir
//path: /data/user/0/com.jiangker.testapplication/cache
Log.i(TAG, "path: ${dir?.path}")
//name: cache
Log.i(TAG, "name: ${dir?.name}")
//absolutePath: /data/user/0/com.jiangker.testapplication/cache
Log.i(TAG, "absolutePath: ${dir?.absolutePath}")
//canonicalPath: /data/data/com.jiangker.testapplication/cache
Log.i(TAG, "canonicalPath: ${dir?.canonicalPath}")
  • getFilesDir()方法

与cache类似,对应文件夹files

//直接获取其下的files目录
val dir = filesDir
//path: /data/user/0/com.jiangker.testapplication/files
Log.i(TAG, "path: ${dir?.path}")
//name: files
Log.i(TAG, "name: ${dir?.name}")
//absolutePath: /data/user/0/com.jiangker.testapplication/files
Log.i(TAG, "absolutePath: ${dir?.absolutePath}")
//canonicalPath: /data/data/com.jiangker.testapplication/files
Log.i(TAG, "canonicalPath: ${dir?.canonicalPath}")
  • getCodeCacheDir()方法

与cache类似,对应文件夹code_cache

//直接获取其下的code_cache目录
val dir = codeCacheDir
//path: /data/user/0/com.jiangker.testapplication/code_cache
Log.i(TAG, "path: ${dir?.path}")
//name: code_cache
Log.i(TAG, "name: ${dir?.name}")
//absolutePath: /data/user/0/com.jiangker.testapplication/code_cache
Log.i(TAG, "absolutePath: ${dir?.absolutePath}")
//canonicalPath: /data/data/com.jiangker.testapplication/code_cache
Log.i(TAG, "canonicalPath: ${dir?.canonicalPath}")
  • getFileStreamPath(String name)方法

对应的files中的文件路径

//对应files中存放了一个app-debug.apk文件
val fileStreamPath = getFileStreamPath("app-debug.apk")
//path: /data/user/0/com.jiangker.testapplication/files/app-debug.apk
Log.i(TAG, "path: ${fileStreamPath?.path}")
//name: app-debug.apk
Log.i(TAG, "name: ${fileStreamPath?.name}")
//absolutePath: /data/user/0/com.jiangker.testapplication/files/app-debug.apk
Log.i(TAG, "absolutePath: ${fileStreamPath?.absolutePath}")
//canonicalPath: /data/data/com.jiangker.testapplication/files/app-debug.apk
Log.i(TAG, "canonicalPath: ${fileStreamPath?.canonicalPath}")