记录一下开发中遇到的一些目录。
在开发中会有内部存储器(Internal Storage)和外部存储器(External Storage)。
内部存储,路径:data/data/packageName/(此部分的根目录)。这个目录下的文件为应用私有的,其他的应用是无法访问的。同时此目录下的文件是会随应用的卸载而被删除。 读写此目录下的文件是不需要权限的。
- getDir(String name, int mode) 返回对应目录下的枝激File文件夹对象。
- getFilesDir() 返回根目录/files文件夹, Context.openFileInput() 和 Context.openFileOutput 都是这个文件夹。
- fileList() 返回的是files下的所有文件名
- deleteFile(String name) 删除files下指定名称的文件。
- getCacheDir() 该方法返回的是根目录/cache的File对象.当Android的内部猛轿袜存储容量过低时,android会自动清除缓存文件
外部储存,在此存储数据是不安全的。在这部分存储,个人可以分为两个部分来总结。
1.本应用相关目录
此部分路径为/storage/emulated/0/Android/data/packageName/。此目录下的文件会随软件的卸载而被删除。 在4.4之后读写此目录下的文件不需要权限 。但是这个目录下的文件可以被用户以及带有 WRITE_EXTERNAL_STORAGE 或 WRITE_EXTERNAL_STORAGE 权限的应用读取或修改。
- getExternalFilesDir(String type) 返回/storage/emulated/0/Android/data/packageName/files/type文件夹,若type为 null 则返回/storage/emulated/0/Android/data/packageName/files文件夹。
- getExternalCacheDir() 返回帆空/storage/emulated/0/Android/data/packageName/cache文件夹
2.外部自定义目录
除1以外的目录。读写这部分文件需要 WRITE_EXTERNAL_STORAGE 或 WRITE_EXTERNAL_STORAGE 权限, 6.0以上需要运行时权限。这部分文件是不会随应用被卸载而删除。
- Environment.getExternalStorageDirectory() 返回/storage/emulated/0文件。
在平时开发当中,我们可能会纠结什么文件该存储在哪个目录下面,要么是不确定放哪,要么是放多了以后放乱了。那就弄清楚哪些文件存哪里吧。
总结:
getCacheDir和getFilesDir目录必须是尘族判root的手机在文件 *** 作系穗肆统中才能看到。如果在应用程序中清空数据或者卸载应用,那这两个目录下的文件也将会被清空。
getExternalCacheDir()与getExternalFilesDir(null)直接在文件系统下Android/data/packagename能看到。如果应用卸载,该目录下的文件会被删除掉。
Environment.getExternalStorageDirectory()目录下创建的文件不会因程序卸载被清除掉。
Android 10.0不需要再动态申请文件读写权限,默认可以读写自己的沙盒文件和公共媒体文件。Android 10.0在外部存储设备中为每个应用提供了一个“隔离存储沙盒”。任何其他应用派改都无法直接访问自己应用的沙盒文件。沙盒,简单而言就是应用专属文件夹,并且访问这个文件夹无需权限。谷歌官方推荐应用在沙盒内存储文件的地址为Context.getExternalFilesDir()下的文件夹,不能再访问Environment下的路径了。
对于暂时不想适配的,但是需要访问文件的,可以把targetSdkVersion设置为28或以下。
关闭所有打州正亮开的程清迹序,特别是那些使用该文件的程序。
右键单击文件并选择“删除”。
将文件移到回收站,然后从回收站中删除它。
如果文件仍然存在,请尝试使用命令提示符删除它:
按 Windows 键 + X 键。
选择“命令提示符(管理员)”。
输入以下命令: del /F /Q [文件路径和文件名]
如果仍然无法删除文件,则可能存在文件锁定,请使用“Unlocker”软件解锁文册宽件并删除它。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)