安卓内外部存储完全解析 -- 别再弄混了

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓内外部存储完全解析 -- 别再弄混了相关的知识,希望对你有一定的参考价值。

参考技术A

安卓开发离不开手机存储,然而大部分人对于安卓开发中的存储概念存在误区,内部外部SD卡傻傻分不清?

以下引用来自对 官方文档 的理解

呵呵呵,先别说话,然而重点来了(敲黑板),按照官方的说法,

内部存储是指系统的存储空间,没有root是访问不到的呦亲,比如sharedPreferenced或者database都是保存在这里面的。

外部存储,又分为 2 部分:

然而现实中,常常有同事把手机那个32G,64G存储叫做内部存储= =,宝宝好累,人家明明是 ExternalStorage !!

希望本篇能让大家对内外部存储有一个正确鲜明的认识

getFilesDir()

路径如下

文档 云:若想操作该路径,你需要一个输出流:

就像这样:

注: this 是 context 对象

路径下会看到新文件哦

如果你还想读取的话, 文档 云:你需要一个输入流:

Log如下

getCacheDir()

文档 云:

路径如下:

特别的,还有getDir() :

getDir("- -!.txt", Context.MODE_PRIVATE).getAbsolutePath()

路径如下:

app_是系统自己加上去的

内部存储就是系统的存储,没有root你是看不到的,内部存储最大特点就是可以用Context对象调用各个获取路径的方法。比如: context.fileList()
那就是

下的文件遍历。

而 deleteFile("ABC") 就是

删除下名为 ABC 的文件
</br></br></br>

操作外部存储你首先需要以下权限

当你申请了write权限,那么read权限默认也就通过啦

再判断状态:

if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState))

Environment.getExternalStorageDirectory()

这个路径根据手机厂家不同会有些许变化

直接传入 Environment 中的常量获取相应的路径,如下:

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_ALARMS));

或者

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES));

公有目录下,系统会区分不同类别 (例如铃声在系统设置中显示为铃声而不是音乐)

4.4以后访问该目录不再需要权限了

getExternalFilesDir(String type)

eg.
getExternalFilesDir(Environment.DIRECTORY_MUSIC)

特别的:ContextCompat下的

ContextCompat.getExternalFilesDirs(context,type)

返回一个File[],在4.4以后第一条数据默认外部主存储目录,第二条数据就是sd卡路径啦,但是注意4.4之前是没有第二条数据的哦

该目录下的特点是卸载程序后,该目录和其下所有文件均会被删除

getExternalCacheDir()

注意,使用该目录注意管理空间,你不能等系统帮你清理,而是自己清理不再需要的缓存

特别的:ContextCompat下的

ContextCompat.getExternalCacheDirs()

道理同上

发现特点了吗朋友,无论外部内部,只有路径中有包名,那么就是私有的,而且是随着程序的卸载而被删除的, 有包名的路径均是Context中的方法,而公有的路径均是Environment调用的

这个货真真是要了老命,一般的方法根部不好使,结合网上有的方法加上公司项目中的方法,总结如下:

百分百好用的获取SD卡路径方法:

最后集合 path 中的值就是SD卡根目录

虽然无视版本百分百好用,但是如果你的手机有SD卡槽却没插SD卡,该方法最后 path 返回的是 null ,也就是说该方法无法判断到底是没插SD卡还是根本不支持SD卡

其实还有一种方法

String path = System.getenv("SECONDARY_STORAGE");

该方法只要你手机支持SD卡,无论你插没插SD卡,均会返回SD卡路径,但是 6.0及以上该方法被移除

Environment中源码其实就是根据这个方法获取路径的

安卓官方文档大家一定要看,他就是我们开发者的权威呀,圣经呀!!

区块链和分布式账本的概念,韭菜们别再搞混了?6月29日前瞻分析


币圈三一五
点击上方蓝色字体关注我们

1

每日前瞻

每日币圈新闻及行情前瞻分析

比特币经过几天的下挫后,今天出现了小幅的反弹,今天早上有很多的粉丝给军长留言,前几天看了军长的分析在高点止盈了,留言基本都是询问现在能进场了没有,军长个人觉得连续几天的下跌后出现一个小反弹诱多的概率较大,目前还建议进场轻仓位观望为主,今天若不能站上MA60日均线上方,并停留数日才有可能再次上行,综合其他指标和成交量来看,短期上行的压力较大,军长个人觉得还会下探8600美元的位置,今天的振幅在收窄,短线也没有什么操作空间,在方向不明朗的时候还是坚持交易体系不动如山,在没有操作空间的时候我们也不能闲下来什么都不干,这个时候应该要多学习,提升自己的认知,今天军长跟大家分享一些区块链的概念。

今天来聊两个基本概念,区块链与分布式账本。区块链是一种分布式账本,但是它又不完全等同超级账本,人们有时会交替使用“区块链”和“分布式账本”,到底他们的区别在哪里?这篇文章就带大家彻底分清区块链与分布式账本。

一、 分布式账本

分布式账本是分布在多个节点或计算设备上的数据库,分布式网络中的每个节点复制并存储一份相同的账本副本。不同于传统数据库利用中央管理员用户控制数据存储,分布式分类账有一个同步数据库系统,这个系统可以提供可审计历史信息记录,对任一网络成员都可见。分布式账本最突出的特征是其不由任何单个机构或个人维护,而是由网络中的每个节点单独构建和记录。并且分布式分类账依赖于与区块链相似的共识原则。虽然在技术上是去中心化的,但是运营主体不一定是中心的。比如,公司里之前只有财务部在记账,为了防止出错,现在公司的账本由全公司的成员一起记。这就是分布式账本。分布式账本技术大大降低了信任成本。分布式账本的结构和结构可以帮助我们减轻对银行、政府、律师、公证人和监管合规官员的依赖。


二、 区块链

区块链只是分布式账本技术的一种形式,区块链分布在点对点的网络上并由其管理。由于它是一个分布式账本,因此可以在没有中央服务器的管理的情况下运行,并且可以通过数据库复制和信任计算来维护其数据质量。但是,区块链的结构使它有别于其他类型的分布式账本。区块链上的数据被分组并以块的形式组织起来,这些块按照时间顺序依次连接形成一条链,并使用密码学技术对其进行安全保护。区块链本质上是一个不断增长的记录列表,它的数据记录使用“仅可添加”的结构,即只允许将数据添加到链上,要更改或删除已经录入的数据是不可能的。密码签名和将记录连成链是将区块链和分布式账本区分开的特点。用白话讲就是,区块链实际上是分布式账本的一个子集。每个区块链都是一个分布式账本,但不是每个分布式账本都是区块链。区块链使用了分布式记账这种技术,但是同时区块链还使用了其他技术例如密码学来保证区块链的有序性、公开性和不可篡改性。也就是说,分布式账本在技术上的是去中心化的,运营上可以保持中心化。而区块链则在技术和运营方面都是去中心化的。就像比特币,在没有中心管理者的情况下依旧平稳运行了十多年。


三、 区别

两者最关键的区别在于:区块链有激励层的存在,它的应用是可以包含激励机制的。分布式账本也有分布式的数据库,也能实现数据库之间的协调,但是它没有激励层,其实就是一个协调得挺好的数据库。分布式数据库可以赋予某人特殊的权限,它在应用上可以是非去中心化的。但一个纯粹的区块链无论在技术层还是应用层都是完全去中心化的,并且包含激励机制。

2


行情分析

实时行情分析

Btc分析: 

区块链和分布式账本的概念,韭菜们别再搞混了?6月29日前瞻分析

BTC昨天最高9283美元,最低9024美元,市场24小时成交量576美元,昨天和前天的成交量相比有所上涨,但整体还是偏低,行情向上反弹要观察是否持续反弹,面对MA60日均线的压力是否能重新站上,K先技术面均线死叉向下呈空头排列,MACD穿破零轴向下运行,RSI数值在43位置向下调整,综合来看笔者认为整个市场处于空头情绪,继续下探的风险加剧,现货短线建议轻仓位观望为主,耐心等待最佳的进场点。压力位:9400美元,支撑位:8600美元

eth分析:

区块链和分布式账本的概念,韭菜们别再搞混了?6月29日前瞻分析

eth联动大盘,小幅反弹收到MA10均线的压制,整体来看处于空头排列,还在下行趋势当中,有再次探底的风险,短线还不建议进场,观望为主,中长线三成仓位持有,压力位:231美元,支撑位:208美元。


bch分析:

区块链和分布式账本的概念,韭菜们别再搞混了?6月29日前瞻分析

bch联动大盘,日均线死叉向下空头排列,近期叫弱势,整体以区间横盘为主,要预防二次探底的风险,周线级别进入下行通道中,短线建议观望,压力位:232,支撑位:205。


ltc分析:

区块链和分布式账本的概念,韭菜们别再搞混了?6月29日前瞻分析

ltc联动大盘,减产后全网算力暴跌,上方套牢盘还存在很多,整体呈弱势,暂时不建议进场,不建议布局,压力位46,支撑位38。


eos分析:

区块链和分布式账本的概念,韭菜们别再搞混了?6月29日前瞻分析

eos联动大盘,今日凌晨出现异常拉升,整体走势在区间横盘呈弱势,短线建议观望为主,压力位2.57,支撑位2.20。


xrp分析:

区块链和分布式账本的概念,韭菜们别再搞混了?6月29日前瞻分析

xrp联动大盘,延续横盘震荡行情,还有一次探底风险,目前不建议持有,待再次探底后再介入。压力位0.187,支撑位0.163。

3

加入社群

欢迎大家加入三一五社群

三一五社群有分析师指导,早上有早报,不定时也会推荐小币种,币圈高质量社群,欢迎大家添加小助手进群。

区块链和分布式账本的概念,韭菜们别再搞混了?6月29日前瞻分析

币圈三一五招收社区节点:有能力为币圈三一五建立200人以上粉丝群的,可以和三一五军团一起发展,打造币圈优质社区,感兴趣的可以加上方小助手备注军团报名。

4

近期推荐

欢迎加入三一五军团 



(本文仅代表作者观点,不构成投资建议,请读者理性对待)


以上是关于安卓内外部存储完全解析 -- 别再弄混了的主要内容,如果未能解决你的问题,请参考以下文章

安卓内部外部文件存储

安卓手机提示没有可用的外部存储,怎么办?

关于获得安卓外部存储读写权限

安卓的存储机制

内部存储器与外部存储器的区别

android中的文件操作详解以及内部存储和外部存储