android文件存储

打开手机设置,选择应用管理,选择任意一个App,然后你会看到两个按钮,一个是清除缓存,另一个是清除数据,那么当我们点击清除缓存的时候清除的是哪里的数据?当我们点击清除数据的时候又是清除的哪里的数据?读完本文相信你会有答案。
在Android开发中我们常常听到这样几个概念,内存,内部存储,外部存储,很多人常常将这三个东西搞混,那么我们今天就先来详细说说这三个东西是怎么回事?

  • 内存,我们在英文中称作memory,
  • 内部存储,我们称为InternalStorage,
  • 外部存储我们称为ExternalStorage,

这在英文中本不会产生歧义,但是当我们翻译为中文之后,前两个都简称为内存,于是,混了。

以前写的一个都是在SD卡根目录直接新建了一个XXX/image/目录,来保存图片缓存的, 但是如果适配到Android6.0,我们就需要弹出对话框给用户,来申请WRITE_EXTERNAL_STORAGE权限

首先,App在手机上保存文件或者缓存数据时,我认为应该遵守以下几点:

1.不要随意占用用户的内置存储。
2.不要随意在SD卡上新建目录,应该放置自己应用包名对应的扩展存储目录下,卸载App时可以被自动清除。
3.对占用的磁盘空间有上限,并按照一定的策略进行清除。
Android下有哪些文件目录
在Android系统中,根据调用的系统API接口,有3种目录可以给我们写入文件:

1.应用私有存储(内置存储)
获取方式:
Context.getFileDir():获取内置存储下的文件目录,可以用来保存不能公开给其他应用的一些敏感数据如用户个人信息
Context.getCacheDir():获取内置存储下的缓存目录,可以用来保存一些缓存文件如图片,当内置存储的空间不足时将系统自动被清除(然而具体多大,清除时的策略我也没查到。。)
绝对路径:
Context.getFileDir():/data/data/应用包名/files/
Context.getCacheDir():/data/data/应用包名/cache/
写权限:不需要申请
这是手机的内置存储,没有root的过的手机是无法用文件管理器之类的工具查看的。而且这些数据也会随着用户卸载App而被一起删除。这两个目录其实就对应着设置->应用->你的App->存储空间下面的清除数据和清楚缓存
2.应用扩展存储(SD卡)
获取方式:
Context.getExternalFilesDir():获取SD卡上的文件目录
Context.getExternalCacheDir():获取SD卡上的缓存目录
绝对路径:
Context.getExternalFilesDir():SDCard/Android/data/应用包名/files/
Context.getExternalCacheDir():SDCard/Android/data/应用包名/cache/
写权限:
API < 19:需要申请
API >= 19:不需要申请
既然是SD卡上的目录,那么是可以被其他的应用读取到的,所以这个目录下,不应该存放用户的敏感信息。同上面一样的,这里的文件会随着App卸载而被删除,也可以由用户手动在设置界面里面清除。

3.公共存储(SD卡)
获取方式:Environment.getExternalStorageDirectory()
绝对路径:SDCard/你设置的文件夹名字/
写权限:需要申请

[参考链接]{http://blog.csdn.net/u012702547/article/details/50269639}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值