Android : 获取内部存储信息方法总结
通过 df 指令可查看当前文件系统的磁盘空间占用情况:
方法一:
private long getSDCardAvailSize() { String state = Environment.getExternalStorageState(); long aaa=0; if (Environment.MEDIA_MOUNTED.equals(state)) { File sdcardDir = Environment.getExternalStorageDirectory(); StatFs sf = new StatFs(sdcardDir.getPath()); long blockSize = sf.getBlockSize(); long blockCount = sf.getBlockCount(); long availCount = sf.getAvailableBlocks(); long totalSeize = blockSize * blockCount; aaa = availCount * blockSize; Log.e("size", "block大小:" + blockSize + ",block数目:" + blockCount + ",总大小:" + blockSize * blockCount / 1024 + "KB"); Log.e("size", "可用的block数目::" + availCount + ",剩余空间:" + availCount * blockSize / 1024 + "KB"); } return aaa; }
方法二:
public long getSystemAvailableStorage() throws RemoteException { try { StorageStatsManager stats = mContext.getSystemService(StorageStatsManager.class); return stats.getFreeBytes(StorageManager.UUID_DEFAULT)/1024/1024; } catch (NoSuchFieldError | NoClassDefFoundError | NullPointerException | IOException e) { e.printStackTrace(); return -1; } }
方法三:
//获取可用存储大小,data区的剩余空间,返回字节数public long getAvailableInternalSize() { File path = Environment.getDataDirectory(); StatFs stat = new StatFs(path.getPath()); long blockSize = stat.getBlockSize(); long availableBlocks = stat.getAvailableBlocks(); return availableBlocks * blockSize; }
补充:该方法获取当前Emmc总大小:
public long getSystemTotalStorage() throws RemoteException { try { long iTotalSize = -1; FileInputStream fis = new FileInputStream(new File("/proc/partitions")); BufferedReader br = new BufferedReader(new InputStreamReader(fis)); String Line = ""; while ((Line = br.readLine()) != null) { if (Line.length() > 7 && Line.lastIndexOf(" ") > 0) { if (Line.substring(Line.lastIndexOf(" ") + 1 , Line.length()).equals("mmcblk0")) { int lastSpacePos = Line.lastIndexOf(" "); String sOnlyNumber = Line.substring(0, lastSpacePos-1); int lastSpaceBeforeSize = sOnlyNumber.lastIndexOf(" "); String sTotalSize = Line.substring(lastSpaceBeforeSize+1, lastSpacePos); Log.d(TAG, "sTotalSize = " + sTotalSize); iTotalSize = Long.parseLong(sTotalSize)/1024; break; } } } br.close(); return iTotalSize; } catch (IOException e) { e.printStackTrace(); } return -1; }
分类:
Android 应用开发
标签:
TV开发
posted on 2020-03-19 11:15 sheldon_blogs 阅读(2715) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
2016-03-19 Linux I2C总线控制器驱动(S3C2440)