美文网首页android 集结号android技术杂荟Android知识
Android基础---你必须了解的应用文件目录

Android基础---你必须了解的应用文件目录

作者: SmartSean | 来源:发表于2017-05-02 17:29 被阅读106次

在开发中一般会对手机的内存进行操作,比如在使用应用过程中产生的一些日志、图片等信息,我们有时候要对其进行必要的操作,所以要对文件这一块要有一个基础的理解。

概念

1、内部存储:

首先说明一个概念,内部存储不是内存,而是像磁盘一样可以存储数据的地方,他在手机内部,属于手机自带内存的一部分。

内部存储私有目录

里面有一个 data/data 文件夹,下面存放是所有应用程序的包名文件夹,这部分的内容只有在手机 root 之后才能看得到,如果使用的是模拟器,可以在 Android Device Monitor 中看到。

比如一个应用的包名为 com.test.test 那么这个应用只能访问 /data/data/com.test.test 目录下面的文件,其他 data/data 目录下面的文件这个应用是访问不到的

方法:

  • Environment.getDataDirectory(); 获取data根目录

  • getFilesDir() 方法用于获取 /data/data/<application package>/files 目录

  • getCacheDir() 方法用于获取 /data/data/<application package>/cache 目录

  • deleteFile() 删除文件

  • fileList() 列出所有文件

注意:当用户卸载 App 时,系统自动删除 data/data 目录下对应包名的文件夹及其内容。

2、外部存储

这里不要被外部存储几个字所迷惑,这里说的外部存储其实不单单指的外置的内存卡, Android 手机在出厂的时候的内存,比如平常我们所说的 64G 、128G 内存,这个部分就是我们开发人员所说的外部存储。

那我们往手机里面插入的内存卡叫什么呢?
对的,也是叫外部存储。

在参考文章看到一句话:只要是能看得到,都是外部存储

外部存储私有目录

备注:一般设备都有内置 SD 卡,同时也提供外部 SD 卡拓展,可能对应路径的目录名有所差异。

如果没有插入内存卡的话,一般外部存储的私有目录就是:

/storage/emulated/0/Android/data/app package name

方法:

  • Environment.getExternalStorageDirectory(); 获取 SD 卡根目录
  • getExternalFilesDir() 方法用于获取 /storage/emulated/0/Android/data/<application package>/files 目录
  • getExternalCacheDir() 方法用于获取 /storage/emulated/0/Android/data/<application package>/cache 目录

除了上面的files目录和cache目录,我们可以根据自己的分类建立其他的目录,便于我们更好的管理

3、内部存储私有目录 VS 外部存储私有目录

不同点

  • 默认情况下,系统并不会自动创建外部存储空间的应用私有目录。只有在应用需要的时候,开发人员通过 SDK 提供的 API 创建该目录文件夹和操作文件夹内容

  • 自 Android 7.0 开始,系统对应用私有目录的访问权限进一步限制。其他 App 无法通过 file:// 这种形式的 Uri 直接读写该目录下的文件内容,而是通过 FileProvider 访问

  • 宿主 App 可以直接读写内部存储空间中的应用私有目录;而在 4.4 版本开始,宿主 App 才可以直接读写外部存储空间中的应用私有目录,使开发人员无需在 Manifest 文件中或者动态申请外部存储空间的文件读写权限

相同点

  • 同属于应用私有目录,当用户卸载 App 时,系统也会自动删除外部存储空间下的对应 App 私有目录文件夹及其内容。

4、最后

内部存储私有目录:

  • SharedPreferences
  • SQLiteDatabase
  • App 中的 WebView 缓存页面信息

不要往里面存放太多的数据

外部存储私有目录:

  • 应用自己使用的图片等数据
  • 缓存数据
  • 日志数据

如果想被其他应用访问到的数据,在 SD 卡的根目录再新建一些文件夹,就不要写在外部存储私有目录下面了。

暂时写这么多,以后开发过程中继续填补。

参考文章:

相关文章

  • Android基础---你必须了解的应用文件目录

    在开发中一般会对手机的内存进行操作,比如在使用应用过程中产生的一些日志、图片等信息,我们有时候要对其进行必要的操作...

  • Android应用清单

    Android应用清单 每个Android应用的根目录中都必须包含一个AndroidManifest.xml文件。...

  • Android事件分发机制详解

    前言 Android事件分发机制是Android开发者必须了解的基础。 目录 一. 基础认知 1.1 事件分发的...

  • FileProvider的使用及注意事项

    一、安卓应用的文件内存储目录 了解 Android 应用的文件存储目录,掌握持久化数据的正确姿势 二、FilePr...

  • Android 事件分发机制详解

    前言 Android事件分发机制是Android开发者必须了解的基础。 目录 一. 基础认知 1.1 事件分发的由...

  • Android应用的目录结构及开发的步骤

    Android应用的目录结构 Android应用开发的步骤 res--->layout文件夹 修改xml布局文件...

  • android app文件目录结构

    android app目录: SDCard/Android/data/你的应用的包名/ 原来,只要把文件写在这里的...

  • Android屏幕适配-应用篇

    目录 Android屏幕适配-基础篇Android屏幕适配-应用篇 Android屏幕适配最主要的原因:  是由于...

  • Servlet基础学习(一)

    Servlet基础学习 一、JavaWEB开发的目录结构 --应用程序根目录/--WEB-INF目录:必须目录--...

  • ddu- path

    Android系统目录结构/init 【系统启动文件】/systemapp【系统应用安装目录】 bin【常用的系统...

网友评论

    本文标题:Android基础---你必须了解的应用文件目录

    本文链接:https://www.haomeiwen.com/subject/hezctxtx.html