Android文件各种存储路径的比较

1、File cacheDir = context.getCacheDir();

应用内部存储空间(数据文件私有)文件存储到这个路径下,不需要申请权限,当应用被卸载的时候,目录下的文件会被删除。
需要注意的是,这个文件的目录和应用的存储位置有关,
当应用被移动到外部存储设备的时候,文件的绝对路径也是变化的,所以建议当数据存储到这个目录的时候,用相对路径。
这个目录和getFilesDir()目录最大的不同在于:当安卓设备的存储空间少,或者不够用的时候,系统会自动删除这个目录下的文件。
官方建议是,超过1MB的文件,建议存储到getExternalCacheDir()目录下

 

2、File filesDir = context.getFilesDir();

应用内部存储空间(数据文件私有)文件存储到这个路径下,不需要申请权限,当应用被卸载的时候,目录下的文件会被删除。
需要注意的是,这个文件的目录和应用的存储位置有关,
当应用被移动到外部存储设备的时候,文件的绝对路径也是变化的,所以建议当数据存储到这个目录的时候,用相对路径
系统提供的访问此路径文件的方法是:context.openFileOutput(String,int);context.openFileInput(String name);

 

3、File externalCacheDir = context.getExternalCacheDir();

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

 

4、File externalFilesDir = context.getExternalFilesDir(null);

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

 

5、File externalStorageDirectory = Environment.getExternalStorageDirectory();

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

 

6、File externalStoragePublicDirectory = 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_DOCUMENTS

优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/637003

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。