zoukankan      html  css  js  c++  java
  • Android 开发 存储目录的详解

    • 简介

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

      

    内部存储空间

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

      方法

      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目录下的所有文件

      deleteFile(String name);

      用来删除该files目录下的文件

    外部存储空间

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

      需要使用Context获取方法

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

      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();

     

  • 相关阅读:
    js 中基本数据类型和引用数据类型 ,,,, js中对象和函数的关系
    something
    js 的constructor属性
    js 的prototype 属性和用法,外加__proto__
    js 获取一下url里面的一些内容
    js 终于明白变量提升的概念了
    动态设置小程序的 标题
    Vue axios调用第三方接口跨域解决
    css translate的一些问题 这其实可以用在,不知道div宽高的情况,从而让其上下,左右都居中。
    用css3写一个可以无限旋转的div或者图片
  • 原文地址:https://www.cnblogs.com/guanxinjing/p/10495568.html
Copyright © 2011-2022 走看看