内外部存储大小

@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
private String getAvailSpace(String path) {
    StatFs fs = new StatFs(path);
    long totalBlocks = fs.getAvailableBlocksLong();
    long size = fs.getBlockSizeLong();
    return android.text.format.Formatter.formatFileSize(this,totalBlocks*size);
}
	String rom = getAvailSpace(Environment.getDataDirectory().getAbsolutePath());
String sdCard = getAvailSpace(Environment.getExternalStorageDirectory().getAbsolutePath());

### Android 外部存储与内部存储的区别 #### 内部存储特点 内部存储位于设备的内置闪存中,具有较高的安全性。普通用户如果没有 root 权限,则无法直接查看其中的文件[^1]。因此,当应用程序需要保护敏感数据免受其他程序或用户的访问时,应优先选择内部存储。 #### 外部存储特性 外部存储可以是可移动介质(如 SD 卡),也可以是指定位置上的不可移除分区。对于特定的应用而言,存在所谓的“外部私有存储空间”,其路径通常为 `/storage/emulated/0/Android/data/package_name` 。尽管这部分区域被视作外部资源的一部分,但它同样遵循着基于包名创建专属目录的原则。 ### 数据持久性和生命周期管理 无论是采用哪种类型的储存方案,在设计阶段都需考虑到所处理的信息预期存在的周期长短。如果某些资料应当随同应用一同消失而不必长期保留的话,那么将其放置于内部缓存或是临时文件夹内会更为合适;反之则建议利用外部公共区存放那些期望长久留存的内容,例如多媒体素材等[^4]。 ### 获取存储容量的方法 通过 `Environment.getExternalStorageDirectory()` 可以获得对外置媒介根节点的引用以便进一步操作该处对象;而调用 `Environment.getDataDirectory()` 则指向了系统级别的私人领域入口,用于读写由当前进程独占的数据集[^3]。 ```java // Java代码示例:查询内外存大小 File internalDir = Environment.getDataDirectory(); StatFs statInternal = new StatFs(internalDir.getPath()); long blockSizeInternal = statInternal.getBlockSizeLong(); long availableBlocksInternal = statInternal.getAvailableBlocksLong(); Log.d("StorageInfo", "Internal Storage Available Bytes:" + (blockSizeInternal * availableBlocksInternal)); File externalDir = Environment.getExternalStorageDirectory(); if(externalDir != null){ StatFs statExternal = new StatFs(externalDir.getPath()); long blockSizeExternal = statExternal.getBlockSizeLong(); long availableBlocksExternal = statExternal.getAvailableBlocksLong(); Log.d("StorageInfo", "External Storage Available Bytes:" + (blockSizeExternal * availableBlocksExternal)); } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值