Android 常用路径的获取__小陈哥哥_的博客-程序员ITS201

技术标签: android  

Android 常用路径的获取

作者:ZONE画派
链接:https://www.jianshu.com/p/e8a11d23513b
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

由于历史原因,Android 历史上一些路径并不固定(也和外存设备的变更有关)。

没法通过固定的路径访问一些文件,需要通过不同的接口获取路径。

一些常用路径如下:

路径 方法 权限 描述 备注
应用内部存储缓存目录 context.getCacheDir() 无需申请权限 内部使用,外部程序无法访问。卸载应用时删除。系统空间不足时可能会删除
应用内部存储文件目录 context.getFileDir() 无需申请权限 内部使用,外部程序无法访问。卸载应用时删除。
应用内部存储数据库目录 context.getDatabasePath() 无需申请权限 内部使用,外部程序无法访问。主要是 SQLite 数据库的目录
应用外部存储缓存目录 context.getExternalCacheDir() 读写需要申请权限 外部程序可以访问。卸载应用可能会删除。系统空间不足时可能会删除
应用外部存储文件目录 context.getExternalFilesDir(String) 读写需要申请权限 外部程序可以访问。卸载应用可能会删除。 支持参数:DIRECTORY_MUSIC, DIRECTORY_PODCASTS, DIRECTORY_ALARMS, DIRECTORY_RINGTONES, DIRECTORY_NOTIFICATIONS, DIRECTORY_PICTURES, DIRECTORY_MOVIES, DIRECTORY_DOWNLOADS, DIRECTORY_DCIM, DIRECTORY_DOCUMENTS
外部存储空间目录 Environment.getExternalStorageDirectory() 读写需要申请权限 外部程序可以访问。卸载应用不会删除。 官方建议不要使用该目录,为避免污染根命名空间
外部存储空间分类目录 Environment.getExternalStoragePublicDirectory(String) 读写需要申请权限 外部程序可以访问。卸载应用不会删除。 支持如下参数android.os.Environment.:DIRECTORY_MUSIC, DIRECTORY_PODCASTS, DIRECTORY_RINGTONES, DIRECTORY_ALARMS, DIRECTORY_NOTIFICATIONS, DIRECTORY_PICTURES, DIRECTORY_MOVIES, DIRECTORY_DOWNLOADS, DIRECTORY_DCIM, DIRECTORY_DOCUMENTS

应用内部存储缓存目录 context.getCacheDir()

  • 接口:context.getCacheDir()
  • 例子:/data/data/包名/cache
  • 权限:应用内部存储空间(数据文件私有,外部程序无法访问)
  • 卸载:应用被卸载的时候,该目录下的文件也会跟着被删除。
  • 备注:如果系统存储空间较少时,系统会自动删除这个目录下的文件。官方建议超过 1 MB 的文件最后不要存储到这个路径下。

应用内部存储文件目录 context.getFilesDir()

  • 接口:context.getFilesDir()
  • 例子:/data/data/包名/files
  • 权限:应用内部存储空间(数据文件私有,外部程序无法访问)
  • 备注:不同于 cache 目录,系统存储空间不足时不会删除该目录。
    访问该路径的方法:
/*
 * name:     文件名
 * mode:     读/写模式。默认为 Context.MODE_PRIVATE = 0
 */

context.openFileInput(String name, int mode);    // 读
context.openFileOutput(String name, int mode);   // 写

应用内部存储数据库目录 context.getDatabasePath()

  • 接口:context.getExternalCacheDir()
  • 例子:/data/data/包名/databases
  • 权限:应用内部存储空间(数据文件私有,外部程序无法访问)
  • 卸载:当应用被卸载的时候,目录下的文件会被删除。(使用 SD 卡等外部存储则不会删除目录)
  • 备注:默认不存在

应用外部存储缓存目录 context.getExternalCacheDir()

  • 接口:context.getExternalCacheDir()
  • 例子:/sdcard/Android/data/包名/cache/storage/emulated/0/Android/data/包名/cache
  • 权限:应用外部存储空间(读写文件需要申请权限 READ_EXTERNAL_STORAGEWRITE_EXTERNAL_STORAGE
  • 卸载:当应用被卸载的时候,目录下的文件会被删除。(使用 SD 卡等外部存储则不会删除目录)
  • 备注:不同设备的目录可能不一样,建议使用相对路径。

应用外部存储文件目录 context.getExternalFilesDir(String)

  • 接口:context.getExternalFileDir(String)
  • 例子:/sdcard/Android/data/包名/files/storage/emulated/0/Android/data/包名/files
  • 权限:应用外部存储空间(读写文件需要申请权限 READ_EXTERNAL_STORAGEWRITE_EXTERNAL_STORAGE
  • 卸载:当应用被卸载的时候,目录下的文件会被删除。(使用 SD 卡等外部存储则不会删除目录)
  • 备注:按照文件类型的不同,支持的参数有:DIRECTORY_MUSIC, DIRECTORY_PODCASTS, DIRECTORY_ALARMS, DIRECTORY_RINGTONES, DIRECTORY_NOTIFICATIONS, DIRECTORY_PICTURES, DIRECTORY_MOVIES, DIRECTORY_DOWNLOADS, DIRECTORY_DCIM, DIRECTORY_DOCUMENTS

外部存储空间目录 Environment.getExternalStorageDirectory()

  • 接口:Environment.getExternalStorageDirectory()
  • 例子:/sdcard//storage/emulated/0/
  • 权限:应用外部存储空间(读写文件需要申请权限 READ_EXTERNAL_STORAGEWRITE_EXTERNAL_STORAGE
  • 卸载:当应用被卸载的时候,目录下的文件不会被删除。
  • 备注:这个目录是用来存放各种类型的文件的目录,在这里用户可以分类管理不同类型的文件(例如音乐、图片、电影等)。官方建议不要直接直接使用该目录,为了避免污染用户的根命名空间,应用私有的数据,应该放在 Context.getExternalFilesDir 目录下其他的可以被分享的文件,可以放在 getExternalStoragePublicDirectory(String) 目录下。

外部存储空间分类目录 Environment.getExternalStoragePublicDirectory(String)

  • 接口:Environment.getExternalStoragePublicDirectory(String)
  • 例子:根据类型不同,可以是 /storage/emulated/0/DCIM/storage/emulated/0/Music
  • 权限:应用外部存储空间(读写文件需要申请权限 READ_EXTERNAL_STORAGEWRITE_EXTERNAL_STORAGE
  • 卸载:当应用被卸载的时候,目录下的文件不会被删除。
  • 备注:这个目录是用来存放各种类型的文件的目录,在这里用户可以分类管理不同类型的文件(例如音乐、图片、电影等)。类型如下: DIRECTORY_MUSIC, DIRECTORY_PODCASTS, DIRECTORY_RINGTONES, DIRECTORY_ALARMS, DIRECTORY_NOTIFICATIONS,
    DIRECTORY_PICTURES, DIRECTORY_MOVIES, DIRECTORY_DOWNLOADS, DIRECTORY_DCIM, DIRECTORY_DOCUMENTS
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq471208499/article/details/103591522

智能推荐

tomcat 3种配置方式_weixin_34283445的博客-程序员ITS201

2019独角兽企业重金招聘Python工程师标准>>> ...

窗口管理工具:HazeOver for Mac_Mac噔噔啊的博客-程序员ITS201

HazeOver for mac是一款帮助用户管理窗口的Mac工具,HazeOver for mac可以把不需要的打开的软件窗口隐藏到桌面背后,帮助用户集中自己的精力,当您切换窗口 HazeOver 自动突出显示活动窗口或应用程序。软件简介系统级的暗黑模式只能对菜单栏和 Dock 栏有效果,而像笔者这种连 Dock 栏都设置为自动隐藏的用户来说,暗黑模式的局限就显现出来了。而通常情况下,人们会...

pythonweb小程序_pythonweb框架Flask学习笔记02-一个简单的小程序_weixin_39832348的博客-程序员ITS201

#-*- coding:utf-8 -*-#导入了Flask类 这个类的实例将会是我们的WSGI应用程序from flask importFlask#创建一个Flask类的实例 第一个参数是应用模块或者包的名称#使用的是单一模块 使用__name__app=Flask(__name__)#route()装饰器 告诉Flask什么样的URL能触发我们的函数#这个函数的名字也在生成 URL 时被特定的...

HTML背景颜色长宽高怎么设置,Dreamweaver 8怎么通过代码设置页面高宽颜色_MsingD的博客-程序员ITS201

Dreamweaver 8怎么通过代码设置页面高宽颜色dreamweaver 8怎么通过代码设置页面高宽颜色?正常我们使用dw设计网页都是用前台来设计网页的高宽,颜色等,该怎么直接使用代码完成这些设置呢?下面我们就来看看详细的.教程,需要的朋友可以参考下!1、打开dreamweaver 8软件,然后新建一个html页。如图:2、接下来页面插入div标签,选择工具栏“插入DIV标签”按钮,在打开对话...

HTML.5初始_多念.的博客-程序员ITS201

初始HTML5,对其页面结构,基本标签认知

mysql转dm7_MySQL迁移至DM7的应对措施_王利芬的博客-程序员ITS201

一、迁移方式可采取DM7自带的数据迁移工具DTS进行不同数据库系统间的元数据和数据迁移,迁移工具在DM7安装目录下的tool子目录下,如下:Linux:[[email protected] tool]$ ./dtsWindows:具体界面如下:支持的迁移方式如下:根据DTS的引导界面填写数据源连接信息,并勾选迁移对象后,即可完成元数据及数据的迁移,迁移过程简单、便捷。二、应对措施2.1、数据库兼容修改...

随便推点

java中List遍历删除元素,Android进阶之光_m0_69439927的博客-程序员ITS201_android list 遍历删除

一、结缘实话说,最开始刷题的时候,刷的是 LeetCode,后来才注意到了剑指 offer 的存在,最开始也是听别人说的,剑指 offer 在面试过程中出现的概率很大,就去尝试将其都做了一遍,做的过程中发现,其实有一部分题目与 LeetCode 有重合,但是更像是 LeetCode 经典题目的集合,更具有代表性。最开始刷过一遍剑指 offer 后,其实印象并不深,直到我参加了 2020 年的秋招面试,才深刻的意识到剑指 offer 的题目出现高频性,至此之后,但凡有人问我怎么刷题,我都会先推荐刷剑指 o

mysql delete limit用法_mysql delete limit 使用方法详解_weixin_39809175的博客-程序员ITS201

mysql delete limit优点: 用于DELETE的MySQL唯一的LIMIT row_count选项用于告知服务器在控制命令被返回到客户端前被删除的行的最大值。本选项用于确保一个DELETE语句不会占用过多的时间。您可以只重复DELETE语句,直到相关行的数目少于LIMIT值为止。 如果DEmysql delete limit优点:用于DELETE的MySQL唯一的LIMIT row_...

源码编译LAMP环境_weixin_34295316的博客-程序员ITS201

http://lq2419.blog.51cto.com/1365130/1177925LAMP是什么呢?就像SHE、羽泉、凤凰传奇等众多著名歌手组合一样,LAMP其实也是一个组合。这个组合在linux界甚至整个IT界可是相当的出名,其实现的功能很是强大。待会给你个图表,你看一下就知道LAMP有多强大了。说了这么多,那LAMP到底是什么呢?既然是组合,那就先介绍下各自代表什么...

MFC中资源视图不能打开_qq_32239771的博客-程序员ITS201_mfc资源视图加载失败

解决方法:1、将resource.h文件或者将工程中所有文件都关闭;2、在资源文件中新建一个*.rc文件,将原来的*.rc中的代码复制到新建的文件中,将原来的删除。保存,关闭工程,重新打开工程。

ubuntu eclipse Hadoop DFS显示Error:Call From master/x.x.x.x to localhost:9000_酸甜小龙虾的博客-程序员ITS201

找了好久才解决这个问题要记住:一个端口对应一个地址,两个以上地址对应一个端口就冲突(什么exist之类的,就是类似抢资源),地址端口不对应就冲突(访问不了)大部分人肯定是Hadoop配置正确,可以上网,而且用WordCount来测试正确了,说–我来安个eclipse吧,结果配置的时候发现这个问题。产生问题:你设置的端口master,对应的不是9000,我不能进行内部访问(大概是这个意思)...