存储目录一共分为三类
外置sdcard的读写权限,从Android 6.0发布之后,基于运行时权限机制访问外置sdcard是需要动态申请权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
1. 应用私有存储目录 , 不需要读写权限。
1.获取内置存储下的文件目录, 获取方法:File file=content.getFilesDir(),路径:/data/data/应用包名/file,可以用来保存不能公开给其他应用的一些敏感数据如用户个人信息。
2获取内置存储下的文件缓存目录, 获取方法:File file=content.getCacheDir(),路径:/data/data/应用包名/cache,可以用来保存一些缓存文件如图片,当内置存储的空间不足时将系统自动被清除。
3 由于这里使用的是Android 手机内置存储,如果手机没有获得root权限的话文件浏览器是无法访问的,同样这种存储也会随之app被删除而被删除。
2.应用扩展存储(sd卡),需要读写权限
1 获取SD卡上的文件目录,获取方法:File file=content.getExternalFilesDir(null) , 路径 : /storage/emulated/0/Android/data/应用包名/file 或SDCard/Android/data/应用包名/file 。
2 获取SD卡上的文件缓存目录,获取方法:File file=content.getExternalCacheDir() , 路径 : /storage/emulated/0/Android/data/应用包名/cache 或SDCard/Android/data/应用包名/cache 。
3 只有手机系统使用的是虚拟外部存储(虚拟SD卡,现在绝大多数的手机,都不用外挂物理SD卡了)的时候,才可以在卸载应用的同时,自动删除该目录下的文件,如果是之前的物理存储(物理SD卡)则不会自动删除该目录,及目录下的文件。在使用的时候,需要判断外部存储的挂载状态(getExternalStorageState(File)),还需要申请读写权限(READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE)。
3.公共存储(sd卡), 需要读写权限
1 应用外部存储空间 获取方法: File file = Environment.getExternalStorageDirectory() , 路径 : /storage/emulated/0 或 /sdcard 。
2 应用外部存储空间 获取方法: File file = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);存储路径 : /storage/emulated/0/Pictures 或 sdcard/Pictures 。这个目录是用来存放各种类型的文件的目录,在这里用户可以分类管理不同类型的文件(例如音乐、图片、电影等);
类型如下: DIRECTORY_MUSIC, DIRECTORY_PODCASTS, DIRECTORY_RINGTONES, DIRECTORY_ALARMS, DIRECTORY_NOTIFICATIONS, DIRECTORY_PICTURES, DIRECTORY_MOVIES, DIRECTORY_DOWNLOADS, DIRECTORY_DCIM, or DIRECTORY_DOCUMENTS