Android 开发 存储目录的详解

  • 简介

  •   Android设备,有3个地方的文件存储位置,他们分别是:
  •   内部存储空间(用户没法浏览到此目录)
  •   外部存储空间(就是手机自身的文件管理目录,用户能够浏览)
  •   SD卡的存储空间(须要插入T卡)
  •   SharedPreferences目录
  •   存储数据库DB目录

 

  

 

内部存储空间

  内部存储空间的获取都须要使用Context.android

  方法

  getFilesDir(); 

    对应内部存储的路径为: data/data/packagename/files数据库

String filesDir = getApplicationContext().getFilesDir().getPath(); 

  getCacheDir();

    对应内部存储的路径为:data/data/packagename/cache ,cache是缓存的意思,这些文件一旦设备内部存储空间不足时,这些保存在cache下的文件会删除,不要期望系统为你删除,通常须要本身设定阈值,一旦系统满时,系统也会删掉cache!----  通常聊天记录都会使用数组

String cacheDir = getApplicationContext().getCacheDir().getPath();

  处理文件方法

  openFileInput();和openFileOutput();

  这2个方法对data/data/packagename/files目录下操做文件缓存

  fileList();

  方法是用来列出该data/data/packagename/files目录下的全部文件spa

  deleteFile(String name);

  用来删除该files目录下的文件操作系统

 

外部存储空间

  外部存储空间有2种不一样目录的文件路径,他们分别须要使用Context和Environment来获取,下面咱们逐个介绍获取方式与对应路径code

  须要使用Context获取方法

  使用上下文获取的路径主要是/android/data/你的包名/      此目录下的路径blog

  getExternalCacheDir();

    对应外部存储路径:/storage/emulated/0/Android/data/packagename/cache  此方法为获取cache缓存文件图片

String externalCacheDir = getApplicationContext().getExternalCacheDir().getPath();

  getExternalCacheDirs();

    对应外部存储路径:/storage/emulated/0/Android/data/packagename/cache  此方法为获取cache下因此文件数组集合文档

File[] externalCacheDirs = getApplicationContext().getExternalCacheDirs();

   getExternalFilesDir(String type);

    对应外部存储路径:/storage/emulated/0/Android/data/packagename/files    此方法获取files文件下的指定文件,这里的参数能够传入null也能够传入一个文件名

String externalFilesDir = getApplicationContext().getExternalFilesDir(null).getPath();

  getExternalFilesDirs(String type);

    对应外部存储路径:/storage/emulated/0/Android/data/packagename/files  此方法获取files文件指定目录的文件数组集合,这里的参数能够传入null也能够传入一个文件名

File[] externalFilesDirs = getApplicationContext().getExternalFilesDirs(null);

   getExternalMediaDirs();

    对应外部存储路径:/storage/emulated/0/Android/media/packagename  此方法获取包名路径下的文件数组集合

 

File[] externalMediaDirs = getApplicationContext().getExternalMediaDirs();

 

  须要使用Environment获取方法

   getExternalStorageState();

    获取sd卡状态,此方法返回的是String类型,一共有如下几种类型:

  • MEDIA_UNKNOWN   SD卡未知
  • MEDIA_REMOVED    SD卡移除
  • MEDIA_UNMOUNTED  SD卡未安装
  • MEDIA_CHECKING   SD卡检查中,刚装上SD卡时
  • MEDIA_NOFS            SD卡为空白或正在使用不受支持的文件系统
  • MEDIA_MOUNTED   SD卡安装
  • MEDIA_MOUNTED_READ_ONLY  SD卡安装可是只读
  • MEDIA_SHARED   SD卡共享
  • MEDIA_BAD_REMOVAL  SD卡移除错误
  • MEDIA_UNMOUNTABLE  存在SD卡可是不能挂载,例如发生在介质损坏
     String externalStorageState = Environment.getExternalStorageState();
        if (externalStorageState.equals(Environment.MEDIA_MOUNTED)){
            //sd卡已经安装
        }

   getExternalStorageDirectory();

    对应外部存储路径:/storage/emulated/0  此方法获取外部存储根目录路径

String externalStorageDirectory = Environment.getExternalStorageDirectory().getPath();

  getExternalStoragePublicDirectory(String type);

    获取外部存储的共享文件夹路径(就是拍照文件夹/下载文件夹/音乐文件夹这些系统的共享文件夹),使用的时候参数必需携带路径类型,且不能为null.

    以相机DCIM目录为例子对应获取的路径为:/storage/emulated/0/DCIM

        String externalStoragePublicDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getPath();
  • DIRECTORY_MUSIC  音乐目录
  • DIRECTORY_PODCASTS  播客目录
  • DIRECTORY_RINGTONES  铃声目录
  • DIRECTORY_ALARMS   警报(闹钟/定时器)铃声目录
  • DIRECTORY_NOTIFICATIONS  提示音目录
  • DIRECTORY_PICTURES  图片目录
  • DIRECTORY_MOVIES  电影目录
  • DIRECTORY_DOWNLOADS  下载目录
  • DIRECTORY_DCIM   相机拍照或录像文件的存储目录
  • DIRECTORY_DOCUMENTS   文件文档目录

 

系统存储空间

   getRootDirectory();

    对应获取系统分区根路径:/system  此方法是获取系统根目录路径,返回包含核心Android操做系统的“系统”分区的根目录,始终以只读方式显示和安装。

 

String rootDirectory = Environment.getRootDirectory().getPath();

 

  getDataDirectory();

    对应获取用户数据目录路径:/data  返回用户数据目录

 

String dataDirectory = Environment.getDataDirectory().getPath();

 

  getDownloadCacheDirectory();

    对应获取用户缓存目录路径:/data/cache  返回下载/缓存内容目录

 

String downloadCacheDirectory = Environment.getDownloadCacheDirectory().getPath();
相关文章
相关标签/搜索