Android的文件基础知识

内部存储和外部存储

Android的文件基础知识_第1张图片

在Android4.4以前,内部存储(Internal Storage)就是指手机机身存储,而外部存储(External Storage)则指外置SD卡。

而在Android4.4及以后,在没有外置SD卡的情况下机身存储分为了内部存储(Internal Storage)和外部存储(External Storage);如果加上外置SD卡则外置SD卡和机身存储的外部存储都算作外部存储(External Storage)

//在Android4.4及以后提供了getExternalFilesDirs方法来获取所有的外置存储
File[] files =  getExternalFilesDirs("");

Android系统中的文件夹

Android的文件基础知识_第2张图片

data目录

/data目录就是所谓的内部存储(ROM),但是当手机没有root的时候不能打开此文件夹。

  1. data/app/

存放所有用户安装的apk文件,不包括系统默认应用文件

  1. data/data/包名/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jv9LwiLm-1661177297780)(https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2020/3/29/171257f84ba6265b~tplv-t2oaga2asx-image.image)]

每个应用的数据都存放在以包名为命名的文件夹下,如图:

  • cache:缓存目录
  • databases:数据库目录
  • files:文件存储目录
  • shared_prefs:SharedPreferences文件存储目录
  1. /data/misc/

这里存放着大部分的WIFI、VPN信息。

  1. /data/user/0/

/data/data目录实际上软连接到/data/user/0目录,相当于/data/data目录是一个指针指向
/data/user/0目录.

在Android4.2之后,Android推出了一个“多用户”的功能特征,意味着一台设备可能被多个人同时应用,因此需要将每个人的数据、应用、个性配置分开。为了区别数据就用数字来区别多用户,这里的0就是指第一个用户

软连接可用看Linux软连接和硬链接

system

Android系统文件,需要root权限

  1. /system/app/

这里存放一些系统的app

  1. /system/fonts/ 目录

这里存放系统的字体文件

  1. /system/lib/ 目录

这里存放的几乎是所有的共享库(.so)文件。

  1. /system/media/ 目录

这里用来保存系统铃声、系统提示音。

storage

storage目录就是外部存储,包括了机身内部存储和外置SD卡。注意不同的版本存储数据的位置不同,例如:

Androidr4.4.2 带SD卡(没有Android4.4的手机,数据来自网络)

位置 路径 获取路径的api
机身外部存储 /storage/emulated/0/Android/data/packname/files getExternalStorageDirectory()
外置SD卡 /storage/sdcard1 getExternalFilesDirs()

Android 8 小米

位置 路径 获取路径的api
机身外部存储 /storage/emulated/0/Android/data/packname/files getExternalStorageDirectory()
外置SD卡 /storage/sd_name getExternalFilesDirs()

sdcard

详情看Android内、外存储易混淆点剖析(/mnt/sdcard、/storage/sdcard0、/storage/emulated/0等区别)

获取Andorid中的目录

以下api返回的值均为Android O下返回的值

内部储存目录

    //创建/data/user/0/packagename/files文件夹,随着应用位置的改变,位置可能改变
      context.getFilesDir();
       //创建/data/user/0/packagename/cache文件夹当需要空间时,
       //系统会自动删除其中的文件(先删除存在最长时间的)
      context.getCacheDir(

你可能感兴趣的:(android,java,开发语言)