关于Android 的文件读写,在写这篇文章前,其实我了解的也并不多,以为所有的读写文件就必须要申请权限,以及在Android 6.0 以后就必须用户同意读写权限,其实不然,在Android 文件读写分为两种,一个是内存存储,另一种是外部存储,下面我们说一下他们有哪些不同
1.内部存储
内部存储在读写时只需要在ManiFests 中申请权限即可,不需要用户同意读写权限,由于存放在以包名为父目录的的文件夹下,所以在App卸载时会被同时删除,使用这类文件夹的有 SharePreferences DataBase Image加载等等...在申请了读写权限后,不需要用户同意,就可以进行操作,同时生命周期伴随着app的卸载而结束
获取内部存储的方法
// /data/user/0/PackageName/files
getFilesDir().getAbsoluteFile();
// /data/user/0/PackageName/cache
getCacheDir().getAbsoluteFile();
// /data/user/0/PackageName/name 权限自己设置 包括全局可读 全局可写 和私有 但是在试验过程中发现除了私有其他都不在支持
getDir("tsmTest",MODE_PRIVATE);
2.外部存储
获取外部存储的方法
// /storage/emulated/0/Android/data/PackageName/files/ 只需要在 Manifests 中生命权限即可
getExternalFilesDir(null).getAbsoluteFile();
// ANDROID_DATA/data/ 即使在 Manifests 中生命了权限,如果用户没有给以权限,则无法操作读写
Environment.getDataDirectory();
外部存储的使用现阶段大家比较常用的就是使用系统的拍照功能,但是在使用过程中传递Uri 的过程中如果是Android7.0 以上则会报错,
android.os.FileUriExposedException
网友评论