博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android常用文件路径介绍
阅读量:7070 次
发布时间:2019-06-28

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

我想很多得人都和我一样,经常记不住文件的路径,到使用的时候又是懵的,然后就想着写一篇来记录一下,方便以后查看。

1.context.getCacheDir();

应用内部存储空间(数据文件私有),当我们的文件存储在这个文件下,是不需要申请权限;当应用被卸载的时候目录下的文件也会跟着被删除。复制代码

注意:这个文件的目录和应用的存储位置有关系,当我们的应用移动到外部存储空间的时候,文件的绝对路径是变化的,所以我们在使用的时候我们尽量使用----相对路径

这个目录和getFilesDir()不同之处就在于,当系统的存储空间比较少的时候,系统会自动删除这个目录下的文件。按照google官方的说法是,超过1MB的文件就最好存储在getExternalCacheDir()里面。context.getCacheDir().getPath输出路径为:/data/data/包名/cache 复制代码

2.context.getFilesDir();

应用内部存储空间(数据文件私有),当我们的文件存储在这个文件下,是不需要申请权限;当应用被卸载的时候目录下的文件也会跟着被删除。复制代码

注意:这个文件的目录和应用的存储位置有关系,当我们的应用移动到外部存储空间的时候,文件的绝对路径是变化的,所以我们在使用的时候我们尽量使用----相对路径

系统提供了一个访问该路径的方法:context.openFileOutput(string , int)  or  context.openFileInput(string , int) 复制代码
(1)string参数: 文件名(2)int参数    Context.MODE_PRIVATE    = 0    Context.MODE_APPEND    =  32768    Context.MODE_WORLD_READABLE =  1    Context.MODE_WORLD_WRITEABLE =  2复制代码
context.getCacheDir().getPath输出路径为:/data/data/包名/files复制代码

3.context.getExternalCacheDir();

应用外部存储空间(数据文件私有,系统媒体文件无法访问(例如存了一个MP3文件,通过系统的文件夹管理系统,无法找到)),当应用被卸载的时候,目录下的文件会被删除,但是这里和getCacheDir()还有不同之处:只有手机系统使用的是虚拟外部存储(虚拟SD卡,现在绝大多数的手机,都不用外挂物理SD卡了)的时候,才可以在卸载应用的同时,自动删除该目录下的文件,如果是之前的物理存储(物理SD卡)则不会自动删除该目录,及目录下的文件。在使用的时候,需要判断外部存储的挂载状态(getExternalStorageState(File)),还需要申请读写权限(READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE)复制代码

注:当其他应用拥有SD卡读写权限的时候,可以访问该目录下的文件

context.getExternalCacheDir().getPath输出路径为:/mnt/sdcard/Android/data/包名/cache 复制代码

4.context.getExternalFileDir();

应用外部存储空间(数据文件私有,系统媒体文件无法访问(例如存了一个MP3文件,通过系统的文件夹管理系统,无法找到)),当应用被卸载的时候,目录下的文件会被删除,但是这里和getFilesDir()还有不同之处:只有手机系统使用的是虚拟外部存储(虚拟SD卡)的时候,才可以在卸载应用的同时,自动删除该目录下的文件,如果是之前的物理存储(物理SD卡)则不会自动删除该目录,及目录下的文件在使用的时候,需要判断外部存储的挂载状态(getExternalStorageState(File)),还需要申请读写权限(READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE)复制代码

注:当其他应用拥有SD卡读写权限的时候,可以访问该目录下的文件

context.getExternalFileDir().getPath()输出路径为:/mnt/sdcard/Android/data/包名/files复制代码

5.Environment.getExternalStorageDirectory();

应用外部存储空间(数据文件非私有,可以被手机的系统程序访问(如MP3格式的文件,会被手机系统检索出来),同样,该目录下的文件,所有的APP程序也都是可以访问的,)注意:外部存储空间可能处于不可访问状态,或者已经被移除状态,或者存储空间损坏无法访问等问题。可以通过getExternalStorageState()这个方法来判断外部存储空间的状态。注:在该目录下读写文件,需要获取读写权限该目录下的文件,这个目录是用户进行操作的一个根目录,进入二级目录可以通过getExternalFilesDirs(String), getExternalCacheDirs(), and getExternalMediaDirs().这些方法复制代码

官方建议,不要直接使用该目录,为了避免污染用户的根命名空间,应用私有的数据,应该放在 Context.getExternalFilesDir目录下其他的可以被分享的文件,可以放在getExternalStoragePublicDirectory(String).目录下

Environment.getExternalStorageDirectory().getPath()输出目录为: /mnt/sdcard 复制代码

6.Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)

应用外部存储空间(数据文件非私有,可以被手机的系统程序访问(如MP3格式的文件,会被手机系统检索出来),同样,该目录下的文件,所有的APP程序也都是可以访问的,)这个目录是用来存放各种类型的文件的目录,在这里用户可以分类管理不同类型的文件(例如音乐、图片、电影等);类型如下: DIRECTORY_MUSIC, DIRECTORY_PODCASTS, DIRECTORY_RINGTONES, DIRECTORY_ALARMS, DIRECTORY_NOTIFICATIONS, DIRECTORY_PICTURES, DIRECTORY_MOVIES, DIRECTORY_DOWNLOADS, DIRECTORY_DCIM, or DIRECTORY_DOCUMENTSEnvironment.getExternalStoragePublicDirectory("test").getPath()输出路径: /mnt/sdcard/test 复制代码

转载地址:http://fehll.baihongyu.com/

你可能感兴趣的文章
Java学习笔记15(面向对象八:匿名对象、内部类)个人认为写的浅显易懂
查看>>
Spring的事件发布机制
查看>>
3大背包问题的个人解释 2014-01-28 14:21 301人阅读 评论(1) 收藏...
查看>>
如何处理证件照 Photoshop CS6+JPEGImager
查看>>
JSON 学习 :JSON数据串、对象、数组之间的转化
查看>>
SpringBoot学习之SpringBoot执行器
查看>>
理解File's ower 和first respond
查看>>
前缀和+折半二分搜索——又是自闭的一天呢
查看>>
基本名词介绍
查看>>
HDU 5869 Different GCD Subarray Query(2016大连网络赛 B 树状数组+技巧)
查看>>
C++ 脑筋急转弯
查看>>
P3723 [AH2017/HNOI2017]礼物
查看>>
spring web app的结构
查看>>
Python+Appium手机纯H5页面测试
查看>>
ES6---数组array新增方法
查看>>
为什么掌握 UML 建模是成为编程高手的一条捷径?
查看>>
【转】vi查询卡片
查看>>
call dword prt[eax]
查看>>
SpringMVC学习笔记:单例与并发问题
查看>>
[20190524]sqlplus 与输出&.txt
查看>>