Android保存文件到本地路径问题

常见路径

例如: application

包名: com.my.company

项目名: chat

/data/data == ///data/user/0

getExternalFilesDir()方法可以获取到 SDCard/Android/data/你的应用的包名/files/ 目录,一般放一些长时间保存的数据getExternalCacheDir()方法可以获取到 SDCard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据如果使用上面的方法,当你的应用在被用户卸载后,SDCard/Android/data/你的应用的包名/ 这个目录下的所有文件都会被删除,不会留下垃圾信息。而且上面二个目录分别对应 设置->应用->应用详情里面的”清除数据“与”清除缓存“选项getCacheDir()方法用于获取/data/data//cache目录getFilesDir()方法用于获取/data/data//files目录

保存一张图片hearder.png到Files

 String path = mContext.getFilesDir().getAbsolutePath(); path = path + File.separator + directoryName + File.separator + fileName; directoryName:chat fileName : hearder.png得到的path即为: ///data/user/0/com.my.company/files/chat/hearder.png 

保存图片到dir

 String path = mContext.getDir(directoryName, Context.MODE_PRIVATE).getAbsolutePath(); path = path + File.separator + fileName;  directoryName:chat Note: directory can not has "/" fileName : hearder.png得到的path即为: ///data/user/0/com.my.company/app_chat/hearder.png

获取路径代码

public String getDiskCacheDir(Context context) {  String cachePath = null;  if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())    || !Environment.isExternalStorageRemovable()) {   cachePath = context.getExternalCacheDir().getPath();  } else {   cachePath = context.getCacheDir().getPath();  }  return cachePath; } 

可以看到,当SD卡存在或者SD卡不可被移除的时候,就调用getExternalCacheDir()方法来获取缓存路径,否则就调用getCacheDir()方法来获取缓存路径。前者获取到的就是 /sdcard/Android/data/com.your.company/cache 这个路径,而后者获取到的是 /data/data/com.your.company/cache 这个路径。

路径分类

android程序扫描储存时,如果使用API:Environment.getExternalStorageDirectory().getPath()获得的是默认路径,可以先判断下Environment.getExternalStorageDirectory().getParentFile(),如果返回null则没有父路径,取Environment.getExternalStorageDirectory().getPath()为当前父路径。

Environment.getDataDirectory() = /data Environment.getDownloadCacheDirectory() = /cache Environment.getExternalStorageDirectory() = /mnt/sdcard Environment.getExternalStoragePublicDirectory(“test”) = /mnt/sdcard/test Environment.getRootDirectory() = /system getPackageCodePath() = /data/app/com.my.app-1.apk getPackageResourcePath() = /data/app/com.my.app-1.apk getCacheDir() = /data/data/com.my.app/cache getDatabasePath(“test”) = /data/data/com.my.app/databases/test getDir(“test”, Context.MODE_PRIVATE)= /data/data/com.my.app/app_test getExternalCacheDir() = /mnt/sdcard/Android/data/com.my.app/cache getExternalFilesDir(“test”)= /mnt/sdcard/Android/data/com.my.app/files/test getExternalFilesDir(null) = /mnt/sdcard/Android/data/com.my.app/files getFilesDir() = /data/data/com.my.app/files

以上这篇Android 保存文件路径方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

更多相关文章

  1. android 对话提示框大全
  2. Android中通过Intent 调用图片、视频、音频、录音、拍照
  3. android 获取连接WiFi的名称SSID
  4. android Fragments (Android官方文档中文版)
  5. Android(安卓)adb不是内部或外部命令
  6. 浅谈Java中Collections.sort对List排序的两种方法
  7. Pycharm安装PyQt5的详细教程
  8. Python list sort方法的具体使用
  9. python list.sort()根据多个关键字排序的方法实现

随机推荐

  1. echarts 超过预警值后节点变红预警
  2. Spring Boot - XMLHttpRequest Upload(上
  3. Shell工具(cut,sed)
  4. HTML5学习的应用方向是什么
  5. 死磕Spring之AOP篇 - Spring AOP常见面试
  6. Spring Boot - axios download file(带请
  7. spring的基础包
  8. spring项目中引入AspectJ相关的Maven依赖
  9. SpringMVC工程搭建
  10. 关于Istio v1.0,你需要知道的事儿