关于文件存储
// 今天存储文件时,对文件路径不是很熟悉,查了资料记录一下
我们在编程时,需要对一些数据进行存储,那么就有对数据存储为文件的需求,从而就需要知道文件存储的路径;一般存储路径分为:外部存储和内部存储他们两的路径不同,获取的方法也就不同。
- 首先先明白他们两的区别:
内部存储:
内部存储是手机系统自带的存储,一般空间都比较小,如果手机没有root是看不见他们存储的位置的,所以内部存储一般存的比较隐私的数据
外部存储:
外部存储一般是SD卡的存储,空间一般都比较大,外部存储又分为两部分:
公有目录和私有目录
公有目录:
公有目录有九大类,比如DCIM、DOWNLOAD等这种系统为我们创建的文件夹
私有目录:
私有目录就是Android这个文件夹,里面有个data文件夹,我的理解就是我们app所私有的存储位置,区别于上面公有的存储,删除了我们的app之后,私有目录下关于我们app存储的文件内容也一并删除,而公共目录中的数据则不会,可继续供其他app调用,所以我们存东西的时候,最好存到私有目录中! - 如何区分两者呢?可根据路径区分
内部存储:data/data/包名/…
外部存储:/storage/emulated/0/Android/data/… - 如何获取内部存储和外部存储的路径呢?
内部存储:
应用文件目录:Context.getFilesDir()
获取
应用缓存目录:Context.getCacheDir()
获取
外部存储:
私有目录
应用文件目录:Context.getExternalFilesDir(String type)
获取
应用缓存目录:Context.getExternalCacheDir()
获取
Context.getExternalFilesDir(String type)
中的type
,系统给我们提供了很多常用类型:
public static String DIRECTORY_MUSIC = "Music";
public static String DIRECTORY_ALARMS = "Alarms";
public static String DIRECTORY_NOTIFICATIONS = "Notifications";
public static String DIRECTORY_PICTURES = "Pictures";
public static String DIRECTORY_MOVIES = "Movies";
public static String DIRECTORY_DOWNLOADS = "Download";
public static String DIRECTORY_DCIM = "DCIM";
public static String DIRECTORY_DOCUMENTS = "Documents";
公有目录:
Environment.getExternalStorageDirectory():
注意:
- 安卓6(API23)及以上得申请运行时权限
- 现在好像高版本的安卓将文件存储在公有目录下会报错,存在私有目录下就没问题,具体什么原因还不是很清楚,需要查验