安卓的enviroment类一般是的到安卓系统的一些目录路径的信息。

1: getDataDirectory() 获取到Android中的data数据目录(sd卡中的data文件夹)/data

2:getDownloadCacheDirectory() 获取到下载的缓存目录     /cache

3:getExternalStorageDirectory() 获取到外部存储的目录

一般指SDcard(/storage/sdcard0)

4:getExternalStorageState()获取外部设置的当前状态

一般指SDcard(SDcard存在并且可以进行读写)

还有其他的一些状态,可以在文档中进行查找。

常量

String

MEDIA_BAD_REMOVAL

在没有正确卸载SDCard之前移除了

String

MEDIA_CHECKING

正在磁盘检查

String

MEDIA_MOUNTED

已经挂载并且拥有可读可写权限

String

MEDIA_MOUNTED_READ_ONLY

已经挂载,但只拥有可读权限

String

MEDIA_NOFS

对象空白,或者文件系统不支持

String

MEDIA_REMOVED

已经移除扩展设备

String

MEDIA_SHARED

如果SDCard未挂载,并通过USB大容量存储共享

String

MEDIA_UNMOUNTABLE

不可以挂载任何扩展设备

String

MEDIA_UNMOUNTED

已经卸载

判断外部内存卡是否是可写入

String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state)) {
     return true;有SD卡可以创建文件夹
  }
    return false; 没有SD卡不能使用
}

不可用就getCacheDir() 获得应用的缓存路径,保存在data/data/包名/cache 文件夹下,或者自己指定一个具体路径

5:getRootDirectory()  获取到Android Root路径       /system

6.getExternalStoragePublicDirectory(String type)

得到当前app所在手机的sdcard位置下的公共子文件夹/storage/sdcard/...

type类型详解

//警报的铃声
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_ALARMS).getPath()=/storage/emulated/0/Alarms
//相机拍摄的图片和视频保存的位置
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getPath()=/storage/emulated/0/DCIM
//下载文件保存的位置
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getPath()=/storage/emulated/0/Download
//电影保存的位置
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES).getPath()=/storage/emulated/0/Movies
//音乐保存的位置
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC).getPath()=/storage/emulated/0/Music
//通知音保存的位置
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_NOTIFICATIONS).getPath()=/storage/emulated/0/Notifications
//下载的图片保存的位置
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getPath()=/storage/emulated/0/Pictures
//用于保存podcast(博客)的音频文件
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PODCASTS).getPath()=/storage/emulated/0/Podcasts
//保存铃声的位置
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_RINGTONES).getPath()=/storage/emulated/0/Ringtones

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

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

应用程序在运行的过程中如果需要向手机上保存数据,一般是把数据保存在SDcard中的。
大部分应用是直接在SDCard的根目录下创建一个文件夹,然后把数据保存在该文件夹中。
这样当该应用被卸载后,这些数据还保留在SDCard中,留下了垃圾数据。
如果你想让你的应用被卸载后,与该应用相关的数据也清除掉,该怎么办呢?
通过Context.getExternalFilesDir()方法可以获取到 SDCard/Android/data/你的应用的包名/files/ 目录,一般放一些长时间保存的数据
通过Context.getExternalCacheDir()方法可以获取到 SDCard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据
如果使用上面的方法,当你的应用在被用户卸载后,SDCard/Android/data/你的应用的包名/ 这个目录下的所有文件都会被删除,不会留下垃圾信息。而且上面二个目录分别对应 设置->应用->应用详情里面的”清除数据“与”清除缓存“选项如果要保存下载的内容,就不要放在以上目录下

专门写一个方法来获取缓存地址

  1. public String getDiskCacheDir(Context context) {
  2. String cachePath = null;
  3. if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())
  4. || !Environment.isExternalStorageRemovable()) {
  5. cachePath = context.getExternalCacheDir().getPath();
  6. } else {
  7. cachePath = context.getCacheDir().getPath();
  8. }
  9. return cachePath;
  10. }

可以看到,当SD卡存在或者SD卡不可被移除的时候,就调用getExternalCacheDir()方法来获取缓存路径,否则就调用getCacheDir()方法来获取缓存路径。前者获取到的就是 /sdcard/Android/data/<application package>/cache 这个路径,而后者获取到的是 /data/data/<application package>/cache 这个路径。

Android开发:filePath放在哪个文件夹

Environment.getDataDirectory() = /data
Environment.getDownloadCacheDirectory() = /cache
Environment.getExternalStorageDirectory() = /mnt/sdcard
Environment.getExternalStoragePublicDirectory(“test”) = /mnt/sdcard/test
Environment.getRootDirectory() = /system
getPackageCodePath() = /data/app/com.my.app-1.apk
getPackageResourcePath() = /data/app/com.my.app-1.apk
getCacheDir() = /data/data/com.my.app/cache
getDatabasePath(“test”) = /data/data/com.my.app/databases/test
getDir(“test”, Context.MODE_PRIVATE) = /data/data/com.my.app/app_test
getExternalCacheDir() = /mnt/sdcard/Android/data/com.my.app/cache
getExternalFilesDir(“test”) = /mnt/sdcard/Android/data/com.my.app/files/test
getExternalFilesDir(null) = /mnt/sdcard/Android/data/com.my.app/files
getFilesDir() = /data/data/com.my.app/files

安卓Enviroment类的详解相关推荐

  1. qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)

    原博主博客地址:http://blog.csdn.net/qq21497936 本文章博客地址:http://blog.csdn.net/qq21497936/article/details/7851 ...

  2. .net System.Web.Caching.Cache缓存类使用详解(转载)

    转自:http://www.cnblogs.com/virusswb/articles/1681561.html net System.Web.Caching.Cache缓存类使用详解 System. ...

  3. ios开发读取剪切板的内容_iOS中管理剪切板的UIPasteboard粘贴板类用法详解

    一.自带剪切板操作的原生UI控件在iOS的UI系统中,有3个控件自带剪切板操作,分别是UITextField.UITextView与UIWebView.在这些控件的文字交互处进行长按手势可以在屏幕视图 ...

  4. Java记录 -22- Java的基类Object详解

    Java的基类Object详解 Java的JDK文档要经常查阅使用,最好查看英文的文档. Oracle官方在线 Java API Specifications http://www.oracle.co ...

  5. C#中NameValueCollection类用法详解

    C#中NameValueCollection类用法详解,1.NameValueCollection类集合是基于 NameObjectCollectionBase 类. 但与 NameObjectCol ...

  6. pythonsvc_sklearn-SVC实现与类参数详解

    sklearn-SVC实现与类参数 它是基于libsvm实现的.随着样本数量的增加,拟合时间的复杂度要高于二次,这就使得当样板数量超过一万个时,很难扩展到数据集中. 在多类处理时,是按照1对1的方案进 ...

  7. laravel 如何 new php 类,PHP实例:laravel通过创建自定义artisan make命令来新建类文件详解...

    <PHP实例:laravel通过创建自定义artisan make命令来新建类文件详解>要点: 本文介绍了PHP实例:laravel通过创建自定义artisan make命令来新建类文件详 ...

  8. (117)System Verilog类继承详解

    (117)System Verilog类继承详解 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog类继承详解 5)结语 1.2 FPGA ...

  9. (116)System Verilog类合成(类包含关系)详解

    (116)System Verilog类合成(类包含关系)详解 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog类合成(类包含关系)详解 ...

最新文章

  1. 经济学人:清华大学或将迅速成为全球科研领军者
  2. 机器学习知识点(九)BP神经网络Java实现
  3. php连接到mysql数据库,PHP MySQL:连接到MySQL数据库
  4. 全球及中国航空发动机市场动态前景及十四五项目专项调研报告2021-2027年版
  5. 最详细的Faster RCNN论文笔记
  6. strcmp() Anyone? UVA - 11732 左孩子右兄弟Trie/计数
  7. 微型计算机系统与接口流水灯,单片机的LED流水灯系统设计2.doc
  8. 链表在libnet中的实现
  9. 静态成员对比实例成员(static修饰符解析)
  10. 3ds Max 2012 简体中文版 带注册机32位64位
  11. 去除电脑端QQ退格到头的音效
  12. Nifi Api访问
  13. Prince打造英语播音员1-3
  14. android百度字体大小设置快捷键,(安卓)百度输入法定制版 — 清爽无广告
  15. android inflate,android inflate详解
  16. ubuntu16 坚果云不能打开
  17. 2020年同济软院夏令营经历
  18. 基金从业-证券投资基金概述第二章重点(了解投资,做好程序员下半生规划)
  19. oracle emp imp 使用介绍
  20. 用 Python 写个俄罗斯方块小游戏

热门文章

  1. 操作系统进程管理部分相关概念知识点
  2. 基于CubeMX-STM32 驱动 WS2812B(__nop()函数方式)
  3. mac vscode 背景半透明_vscode 酷炫毛玻璃效果 (超详细)
  4. Android-短信验证码
  5. cytoscape遇到的坑
  6. 泰安北大青鸟 Java培训_泰山区岱岳javaEE开发职业学校_java编程
  7. JavaScript Boolean(逻辑)对象
  8. unity 读取灰度图生成按高程分层设色地形模型
  9. 需求500万人,月薪上万的“物联网安装调试员”了解一下!
  10. BugScan插件编写高(gǎo)级(jī)教程