当前位置: 首页 > wzjs >正文

哈尔滨住房建设发展集团网站合肥建设局

哈尔滨住房建设发展集团网站,合肥建设局,官方网站建设的四个步骤,网站建设提供的网站资料一、背景 作为一个开发者,我们经常需要通过缓存一些文件到SD卡中,常见的方式就是,通过: File sdCard Environment.getExternalStorageDirectory(); 获取SD卡根目录,然后自定义文件/文件名进行文件存储.这样做法的结果就是,当手机安装了大量的app时,SD卡根目录会…

一、背景

作为一个开发者,我们经常需要通过缓存一些文件到SD卡中,常见的方式就是,通过:

File sdCard = Environment.getExternalStorageDirectory();

获取SD卡根目录,然后自定义文件/文件名进行文件存储.这样做法的结果就是,当手机安装了大量的app时,SD卡根目录会迅速变得杂乱不堪。并且在API 6.0之后,根目录文件存储是需要用户授权的,就算你在AndroidManifest.xml中配置了存储权限,用户不授权也是写不进去了

SD卡读写权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

其实,Google已经提供了最佳的外部存储方案,那就是统一路径为:

/Android/data/< package name >/files/… (该路径通常挂载在/mnt/sdcard/下)

外部存储路径调用方法是: context.getExternalFilesDir(dir).getAbsolutePath()   //通过context调用,

参数dir为自自定义文件夹.这个方法获得的文件存储路径适用于6.0以后系统,主要AndroidManifest.xml配置读写权限了,就不需要用户再授权了.

内部存储路径调用方法是:context().getCacheDir().getAbsolutePath() //通过context调用

二、本地存储路径常用方法介绍

1. getCacheDir()

  • 路径/data/data/<package_name>/cache/

  • 存储类型:内部存储(应用私有目录)。

  • 特点

    • 无需权限,应用卸载时自动删除。

    • 适合存放临时缓存文件(如图片缓存)。

    • 系统可能在存储不足时清理此目录(但依赖系统实现,不保证及时性)。

  • 示例

    File cacheDir = context.getCacheDir();


2. getFilesDir()

  • 路径/data/data/<package_name>/files/

  • 存储类型:内部存储(应用私有目录)。

  • 特点

    • 无需权限,应用卸载时自动删除。

    • 适合存放长期使用的私有文件(如用户配置、数据库文件)。

    • 系统不会自动清理,需开发者管理。

  • 示例

    File filesDir = context.getFilesDir();


3. getExternalFilesDir(String type)

  • 路径/Android/data/<package_name>/files/<type>/
    (例如 Environment.DIRECTORY_DOWNLOADS 指定子目录)

  • 存储类型:外部存储(应用私有目录)。

  • 特点

    • 从 Android 4.4(API 19)开始无需权限;但若访问其他应用的目录或公共目录(如 DCIM)仍需权限。

    • 应用卸载时自动删除。

    • 适合存放媒体文件等较大数据(如音视频、文档)。

    • 用户可通过文件管理器直接访问(需注意隐私问题)。

  • 示例

  • File externalFilesDir = context.getExternalFilesDir(Environment.DIRECTORY_PICTURES);


4. getExternalCacheDir()

  • 路径/Android/data/<package_name>/cache/

  • 存储类型:外部存储(应用私有目录)。

  • 特点

    • 与 getExternalFilesDir() 类似,但专用于缓存文件。

    • 系统或用户可能手动清理此目录。

    • 适合存放临时外部缓存(如下载的临时文件)。

  • 示例

    File externalCacheDir = context.getExternalCacheDir();

5. Environment.getExternalStorageDirectory()

  • 已废弃 (API 29+),建议使用 Context#getExternalFilesDir(String) 或其他存储访问框架

  • 返回共享的外部存储根目录 (如 /storage/emulated/0)

  • 需要 READ_EXTERNAL_STORAGE 或 WRITE_EXTERNAL_STORAGE 权限

  • 存储在此处的文件对所有应用可见,用户也可以通过文件管理器访问

  • 应用卸载时文件不会被自动删除

三、路径说明和对比

getCacheDir():/data/data/你的应用的包名/cache
getFilesDir():/data/data/你的应用的包名/files
getExternalFilesDir():SDCard/Android/data/你的应用的包名/files/
getExternalCacheDir():SDCard/Android/data/你的应用包名/cache/


从上文每个方法获取的路径中可以看出,getCacheDir()和getFilesDir()是获取手机自带的存储空间中的当前包文件的路径 ;
getExternalFilesDir()和getExternalCacheDir()是获取手机中SD卡的存储控件中的当前包文件的路径。

关键区别总结

区别方法存储位置是否需要权限卸载是否删除系统清理行为适用场景
external storage
外部存储
Environment.getExternalStorageDirectory()SD卡根目录:/storage/emulated/0已废弃,不建议再使用,推荐使用getExternalFilesDir代替
context.getExternalFilesDir(dir)路径:/storage/emulated/0/Android/data/<package_name>/files/...否(API 19+)较大的媒体或文档文件
context.getExternalCacheDir()路径:/storage/emulated/0/Android/data/<package_name>/cache/...否(API 19+)可能(用户/系统)外部临时缓存文件
internal storage
内部存储
context.getFilesDir()路径:/data/data/<package_name>/files适合存储应用长期使用的私有文件
context.getCacheDir()路径:/data/data/<package_name>/cache可能(低存储时)内部临时缓存文件

 注:/data/data/等同于/data/user/0

四、注意事项

1、权限问题

访问外部存储的公共目录(如相册)需 READ_EXTERNAL_STORAGE/WRITE_EXTERNAL_STORAGE 权限(Android 10+ 分区存储限制)。

私有目录(getExternalFilesDir/getExternalCacheDir)在 API 19+ 无需权限。

2、兼容性:

使用前检查外部存储是否可用:
Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)

3、存储选择建议:

小文件或敏感数据优先用内部存储(getFilesDir)。

大文件或用户需访问的文件用外部私有目录(getExternalFilesDir)。

4、清理责任:

缓存目录(getCacheDir/getExternalCacheDir)应定期清理,避免占用过多空间。


文章转载自:

http://WSwy6j95.xrrjb.cn
http://LYM29SZd.xrrjb.cn
http://GnPqxVBp.xrrjb.cn
http://04qD1x1D.xrrjb.cn
http://09xVIbMz.xrrjb.cn
http://dYH665GS.xrrjb.cn
http://Oal8QIPY.xrrjb.cn
http://xQeY3Hg5.xrrjb.cn
http://nMc8VgdV.xrrjb.cn
http://h1qEje5G.xrrjb.cn
http://WXrirpkQ.xrrjb.cn
http://88ZxBZuJ.xrrjb.cn
http://8Ms1E731.xrrjb.cn
http://A8vk4796.xrrjb.cn
http://WbMqsyCA.xrrjb.cn
http://Inoc7L5B.xrrjb.cn
http://jPDvhgsM.xrrjb.cn
http://ltM6SXGK.xrrjb.cn
http://PMB2RK9m.xrrjb.cn
http://6647VVBL.xrrjb.cn
http://a9HNW7Bb.xrrjb.cn
http://ko9nlWL4.xrrjb.cn
http://zHvqbXc9.xrrjb.cn
http://XRwYw9xD.xrrjb.cn
http://C3AuIyhM.xrrjb.cn
http://feBn1KV0.xrrjb.cn
http://7HsZKkGi.xrrjb.cn
http://lCAuj3O1.xrrjb.cn
http://OYKCsLy5.xrrjb.cn
http://xemS4BtD.xrrjb.cn
http://www.dtcms.com/wzjs/717292.html

相关文章:

  • 中国三大门户网站是哪三个做商品抬价是什么兼职网站
  • 龙岗同乐社区网站建设静态网址
  • 湖南建立网站营销策划免费注册电子邮件地址
  • 苏州网站开发公司济南兴田德润地址搜狐做网站
  • 福州做网站企业刚刚深圳发生的大事
  • 资讯门户类网站模板翻译类公司网站模板
  • 建一个素材网站多少钱wordpress课程
  • 做推送好用的网站无代码建站
  • 有网站源程序怎么做网站后台如何对网站进行推广
  • 南昌成都网站建设方案三河市住房与建设局网站
  • 哪个网站的pc端是用vue做的西安做网站公司哪个好
  • 国外设计网站中国建设网站红黑榜名单
  • 哈尔滨网站快速排名网站后台怎么管理
  • 怎么做公司的网站阿里巴巴网站特色
  • 德阳公司网站建设从零开始学Wordpress建站
  • 永春建设局网站广州网站设计智能 乐云践新专家
  • 地方门户网站的出路旅游网站功能简介
  • 做爰明星视频网站软件工程师有前途吗
  • 网站转化微信小程序wordpress插件打不开
  • 西安正规网站建设公司域名解析后怎么做网站
  • 公司网站续费一年多少钱淘宝内部领优惠券的网站怎么建设
  • 积极做好门户网站建设工作福建刚刚发生大事
  • 做设计网站的工作唐山自助建站系统
  • 优秀的网站建设公司wordpress修改默认后台登录链接
  • 毕节市网站建设58同城网络运维招聘
  • 沂源网站建设yx718营销型企业网站建设哪家好
  • 双控机制建设网站网站建设与维护教案
  • 柳州建网站上海有名的装修公司
  • 网站设计制作好么内涵图网站源码
  • 百度site app网站添加到网站首页源文件中的代码是哪些?简洁自适应wordpress主题