Android SDCard操作(文件读写,容量计算)

Android获取cpu,内存,磁盘使用率信息 鉴于某个垃圾博主只搬运两个小功能,竟然收30分,实在忍无可忍这种垃圾。app需要系统签名才可以获取信息,普通权限app只能部分信息。 立即下载

 

android.os.Environment

提供访问环境变量  

java.lang.Object

android.os.Environment 

 

Environment 静态方法:

  方法 : getDataDirectory ()

返回 : File 

解释 : 返回Data的目录 

 

方法 : getDownloadCacheDirectory ()

返回 : File

解释 : 返回下载缓冲区目录

方法 : getExternalStorageDirectory ()

返回 : File

解释 : 返回扩展存储区目录(SDCard)


方法 : getExternalStoragePublicDirectory (String type)

返回 : File

解释 : 返回一个高端的公用的外部存储器目录来摆放某些类型的文件(来自网上) 

方法 : getRootDirectory ()

返回 : File

解释 : 返回Android的根目录

方法 : getExternalStorageState ()

返回 : String

解释 : 返回外部存储设备的当前状态  

 

 

getExternalStorageState () 返回的状态String 类型常量 :

常量 : MEDIA_BAD_REMOVAL

值    : "bad_removal"

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

常量 : MEDIA_CHECKING

值    : "checking"

解释 : 正在磁盘检查

 

常量 : MEDIA_MOUNTED

值    : "mounted"

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

 

常量 : MEDIA_MOUNTED_READ_ONLY

值    : "mounted_ro"

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

 

常量 : MEDIA_NOFS

值    : "nofs"

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

 

常量 : MEDIA_REMOVED

值    : "removed"

解释 : 已经移除扩展设备

 

常量 : MEDIA_SHARED

值    : "shared"

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

 

常量 : MEDIA_UNMOUNTABLE

值    : "unmountable"

解释 : 不可以挂载任何扩展设备

 

常量 : MEDIA_UNMOUNTED

值    : "unmounted"

解释 : 已经卸载

使用时只需先判断SDCard当前的状态然后取得SdCard的目录即可(见源代码)

---------------------------------------------------------------------------------------------------------

  1. //SDcard 操作  
  2. ublic void SDCardTest() {  
  3. // 获取扩展SD卡设备状态  
  4. String sDStateString = android.os.Environment.getExternalStorageState();  
  5.   
  6. // 拥有可读可写权限  
  7. if (sDStateString.equals(android.os.Environment.MEDIA_MOUNTED)) {  
  8.   
  9.     try {  
  10.   
  11.         // 获取扩展存储设备的文件目录  
  12.         File SDFile = android.os.Environment  
  13.                 .getExternalStorageDirectory();  
  14.   
  15.         // 打开文件  
  16.         File myFile = new File(SDFile.getAbsolutePath()  
  17.                 + File.separator + "MyFile.txt");  
  18.   
  19.         // 判断是否存在,不存在则创建  
  20.         if (!myFile.exists()) {  
  21.             myFile.createNewFile();  
  22.         }  
  23.   
  24.         // 写数据  
  25.         String szOutText = "Hello, World!";  
  26.         FileOutputStream outputStream = new FileOutputStream(myFile);  
  27.         outputStream.write(szOutText.getBytes());  
  28.         outputStream.close();  
  29.   
  30.     } catch (Exception e) {  
  31.         // TODO: handle exception  
  32.     }// end of try  
  33.   
  34. }// end of if(MEDIA_MOUNTED)  
  35. // 拥有只读权限  
  36. else if (sDStateString  
  37.         .endsWith(android.os.Environment.MEDIA_MOUNTED_READ_ONLY)) {  
  38.   
  39.     // 获取扩展存储设备的文件目录  
  40.     File SDFile = android.os.Environment.getExternalStorageDirectory();  
  41.   
  42.     // 创建一个文件  
  43.     File myFile = new File(SDFile.getAbsolutePath() + File.separator  
  44.             + "MyFile.txt");  
  45.   
  46.     // 判断文件是否存在  
  47.     if (myFile.exists()) {  
  48.         try {  
  49.   
  50.             // 读数据  
  51.             FileInputStream inputStream = new FileInputStream(myFile);  
  52.             byte[] buffer = new byte[1024];  
  53.             inputStream.read(buffer);  
  54.             inputStream.close();  
  55.   
  56.         } catch (Exception e) {  
  57.             // TODO: handle exception  
  58.         }// end of try  
  59.     }// end of if(myFile)  
  60. }// end of if(MEDIA_MOUNTED_READ_ONLY)  
  61. // end of func  

计算SDCard的容量大小

android.os.StatFs

一个模拟linux的df命令的一个类,获得SD卡和手机内存的使用情况  

java.lang.Object

android.os.StatFs

 

构造方法:

StatFs (String path)

 

公用方法: 

方法 : getAvailableBlocks ()

返回 : int

解释 :返回文件系统上剩下的可供程序使用的块

 

方法 : getBlockCount ()

返回 : int

解释 : 返回文件系统上总共的块

 

方法 : getBlockSize ()

返回 : int

解释 : 返回文件系统 一个块的大小单位byte

 

方法 : getFreeBlocks ()

返回 : int

解释 : 返回文件系统上剩余的所有块 包括预留的一般程序无法访问的

 

方法 : restat (String path)

返回 : void

解释 : 执行一个由该对象所引用的文件系统雷斯塔特.(Google翻译)


想计算SDCard大小和使用情况时, 只需要得到SD卡总共拥有的Block数或是剩余没用的Block数,再乘以每个Block的大小就是相应的容量大小了单位byte.(见代码)  

 

 

Android 解析如何检测获取SDCard内存剩余空间.rar Android 解析如何检测获取SDCard内存剩余空间,用到了Environment 类、StatFs 类。SDCard存储卡在 Android 手机上是可以随时插拔的,每次的动作都会引起Android系统ACTION_BROADCAST,本例子将计算出 SDCard 的剩余容量和总容量。供测试的sd卡中存了两首歌和一个30M的文件,现在检测剩余的空间正好相符。 立即下载

相关推荐

STM32单片机入门学习(六)-光敏传感器控制LED

光敏传感模块一DO端接B13,GND接GND,VCC接VCC,AO不接。LED负极接B12,正极接VCC。

指尖魔法师 4368

Android StatFs类

StatFs用于获取存储空间 1,构造函数 StatFs(String path) 2,方法 A,API getAvailableBlocks() 文件系统中可被应用程序使用的空闲存储区块的数量 getBlockCount() 文件系统中总的存储区块的数量 getBlockSize() 文件系统中每个存储区块的字节数 getFreeBl

txwzj的专栏 2979

ROS专栏—基于STM32F103的INA219电源数据采集

文章主要记录了stm32f103对ina219的数据采集

热爱生活、奋斗前行 2354

STM32 通过USB接口读写挂载的SD卡(支持fatfs文件系统)

通过USB接口读写挂载到SDIO上的SD卡内容,支持fatfs

会飞的蜗牛 1万+

LTspice仿真三线制PT100高精度测温系统设计

本文详细介绍了如何使用LTspice仿真设计三线制PT100高精度测温系统。文章从三线制原理出发,逐步讲解了在LTspice中建模PT100、构建惠斯通电桥进行信号转换、设计差分放大与滤波电路、选型ADC以及进行系统联调与误差分析的全过程,旨在帮助工程师实现0.5°C分辨率的工业测温方案设计。

pz89012345的博客 99

分布式 Agent 系统设计:高并发场景下的挑战与解决方案

分布式 Agent 系统由多个分布在不同节点上的智能 Agent 组成,这些 Agent 具有自主决策能力,能够通过通信协作完成复杂任务。每个 Agent 可以看作是一个独立的实体,具备感知环境、处理信息、执行动作的功能,它们相互协作,共同实现系统的整体目标。分布式 Agent 系统在高并发场景下面临着资源调度、通信延迟、状态一致性、容错处理和性能瓶颈等诸多挑战。通过采用动态资源分配、高效通信协议、分布式共识算法、冗余备份等解决方案,可以有效应对这些挑战,提高系统的性能、可靠性和可用性。

shuizhudan223的博客 1292

STM32CubeMX系列09——SDIO(SD卡读写、SD卡移植FATFS文件系统)

CubeMX配置了如何读写SD卡,并移植了FATFS文件系统

32Haozi 1万+

Lumerical FDTD新手必看:从零开始搭建光子晶体仿真环境(附完整脚本)

本文为Lumerical FDTD新手提供光子晶体仿真环境的完整搭建指南,涵盖从基础参数设置到脚本编写的全流程。通过典型光子晶体带隙分析案例,详细讲解结构建模、仿真参数配置及后处理技巧,并附赠完整MATLAB脚本,帮助用户快速掌握FDTD仿真核心技术。

3c4x5z6v7b的博客 1053

9.2CubeMx配置SD卡FATFS系统_stm32H7系列 SD卡 FR_NO_FILESYSTEM 找不到FatFs系统的问题

/挂载盘符A】会出现f_mount挂载SD卡返回没有文件系统FR_NO_FILESYSTEM,但是SD卡是有文件系统的,即使接着格式化SD卡你会出现问题(retSD = f_mkfs(SDPath,0,0,work,sizeof(work));这时,就需要手动打开两个宏定义ENABLE_SD_DMA_CACHE_MAINTENANCE 、ENABLE_SCRATCH_BUFFER。开启宏ENABLE_SD_DMA_CACHE_MAINTENANCE、ENABLE_SCRATCH_BUFFER。

qq_36561846的博客 8956

如何理解鲁棒性?为什么robustness会翻译为鲁棒性?

鲁棒性,英文为Robustness(承受故障和干扰的能力),是许多复杂系统(包括复杂网络)的关键属性。复杂网络的鲁棒性研究对许多领域都非常重要。本文着重介绍了鲁棒性的基本定义、命名起源、分类区别、提升方法和具体应用,供大家学习参考。

weixin_46880696的博客 8万+

C#上位机性能优化全攻略:彻底解决界面卡顿+多线程死锁+PLC数据延迟,产线实测稳定运行2年

一开始我们用的是网上找的零散优化代码,根本满足不了要求,后来花了2个月的时间,把之前27条产线的代码整理、重构、优化,做了一套这套方案上线后,连续稳定运行2年零3个月:界面响应时间稳定在50ms以内,多线程死锁率持续为0,PLC数据延迟稳定在150ms以内,系统可用率≥99.99%,帮客户一年省下了超过480万的停线损失、罚款损失和人工成本,客户第二年就把剩下的22条产线也全部交给我们做了,还介绍了3家同行。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 294

Android 自动占满存储空间

究竟有没有成功,我们可以通过代码去看。

qq_27494201的博客 536

机器翻译的评价标准:BLEU、ROUGE等指标说明及代码实现

机器翻译领域常用的自动评价指标主要包括BLEU、ROUGE、METEOR和COMET四大类。BLEU基于n-gram精确率和短句惩罚,ROUGE关注召回率,METEOR结合精确率和召回率并考虑同义词,COMET则利用预训练模型计算语义相似度。这些指标各有特点:BLEU适用于机器翻译,ROUGE对长句友好,METEOR更接近人工评分,COMET无需参考译文。代码实现上,sacrebleu、rouge-score等库提供了便捷的计算方式。新兴趋势包括基于BERT等模型的语义评估和大语言模型评估器,但传统指标仍占

数据知道的博客 9419

Android SDCard操作(文件读写,容量计算)<转载>

android.os.Environment 提供访问环境变量 java.lang.Object android.os.Environment   Environment 静态方法:         方法 : getDataDirectory () 返回 : File ...

doloveme的专栏 141

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: Task和Activity相关
下一篇: Linux中通过/proc/stat等文件计算Cpu使用率
红尘给我滚滚
博客等级 码龄18年 65粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值