博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
全面的Android文件目录解析和获取方法(包含对6.0系统的说明)
阅读量:6227 次
发布时间:2019-06-21

本文共 1850 字,大约阅读时间需要 6 分钟。

hot3.png

在android 6.0以前,你可以只关注外置存储是否挂载即可,但是从6.0以后,也就是M系统后,还需要判断是否有读写权限,只有具备这些权限才可以读写外置存储。

 

1,Context.getFilesDir

获取路径:/data/user/0/应用包名/files

该目录是应用的文件存储目录,应用被卸载时,该目录一同被系统删除。默认存在,默认具备读写权限(6.0系统可以不用向用户申请)

 

2,Context.getCacheDir

获取路径:/data/user/0/应用包名/cache

该目录是应用的文件缓存目录,应用被卸载时,该目录一同被系统删除。默认存在,默认具备读写权限。不同于getFileDir,该目录下的文件在系统内存紧张时,会被清空文件,来腾出空间供系统使用,著名的图片加载库ImageLoader就是在没有外置存储读写权限时使用此文件夹。getFileDir,不会因为系统内存不足而被清空。(6.0系统可以不用向用户申请)

 

3,Context.getObbDir

获取路径:/storage/emulated/0/Android/obb/应用包名 

该目录是应用的数据存放目录,一般被用来存放游戏数据包obb文件。默认存在,可读写(6.0系统可以不用向用户申请)

 

4,Context.CodeCacheDir

获取路径:/data/user/0/应用包名/code_cache

默认存在,可读写。(6.0系统可以不用向用户申请)

 

5,Context.getExternalFilesDir

获取路径:(以下载目录为准) /storage/emulated/0/Android/data/应用包名/files/Download

默认存在,可读写。(6.0系统可以不用向用户申请)

 

6,Context.getExternalCacheDir

获取路径:/storage/emulated/0/Android/data/应用包名/cache

默认存在,可读写。(6.0系统可以不用向用户申请)

 

7,Context.getDatabasePath

获取路径:/data/user/0/应用包名/databases/参数名

默认不存在,可读写。(6.0系统可以不用向用户申请)

 

8,Context.getDir

获取路径:/data/user/0/应用包名/app_参数名

默认存在,可读写。分为Private等三个权限,private代表仅能自己访问。(6.0系统可以不用向用户申请)

 

9,Context.getPackageCodePath

获取路径:/data/app/应用包名-1/base.apk

默认存在,获取apk包路径

 

10,Context.getRootDirectory

获取路径:/system

默认存在,不可读写(除非具备root权限)

 

11,Environment.getExternalStorageDirectory

获取路径:/storage/emulated/0

默认存在,声明权限则可读写(6.0和以后系统还需要向用户申请同意才可以)

 

12,Environment.getExternalStoragePublicDirectory

获取路径:/storage/emulated/0/Download(以下载目录为例)

默认存在,声明权限则可读写(6.0和以后系统还需要向用户申请同意才可以)

 

13,Environment.getDownloadCacheDirectory

获取路径:/cache

默认存在,声明权限则可读写(6.0和以后系统还需要向用户申请同意才可以)

 

14,Context.getFileStreamPath

获取路径:/data/data/应用包名/files/download(示例download)

该目录是应用的文件存储目录,应用被卸载时,该目录一同被系统删除。默认存在,默认具备读写权限(6.0系统可以不用向用户申请)

 

附注:

1)上述路径是通过getAbsulotePath方法获得,一般情况下等同于getPath

2)在6.0系统上,一般Java层实现对外置存储的文件操作需要向用户申请,如果用C层实现,则可以越过这种限制

3)配置targetsdk为19,compilesdk为22,可以避免在6.0手机上的权限限制

转载于:https://my.oschina.net/gabriel1215/blog/892421

你可能感兴趣的文章
Win10提示“您未连接到nvidia gpu的显示器”的解决方法
查看>>
Leetcode 28 实现strStr()
查看>>
网卡绑定的7种模式
查看>>
人生长恨水长东
查看>>
PCB的初次窥探
查看>>
如何巧妙的使用ArrayList的Clone方法
查看>>
[转] 基于NodeJS的前后端分离的思考与实践(五)多终端适配
查看>>
Oracle 查看表结构视图
查看>>
Virtual servers on a Raspberry Pi with the light weight OS virtualization system Docker!
查看>>
一起学Android之Intent
查看>>
day1作业二:多级菜单操作
查看>>
php 构造函数 __construct()
查看>>
1117 Eddington Number
查看>>
图片加载之AFNetwork(上)
查看>>
递归和尾递归
查看>>
MongoDB--副本集基本信息
查看>>
sublime text 3安装
查看>>
UIViewController的生命周期
查看>>
[jzoj 5230] 队伍统计(状压DP)
查看>>
第一套面试题
查看>>