前言

代码功能:获取Sdcard或者U盘磁盘大小,空闲大小等。

好记性不如烂笔头

正文

存在单位转换

    /**
     * 磁盘单位转换
     *
     * @param size
     * @return
     */
    public static String unitConversion(long size) {
        long kb = 1024;
        long mb = kb << 10;
        long gb = mb << 10;
        if (size >= gb) {
            return String.format("%.1f GB", (float) size / gb);
        } else if (size >= mb) {
            float f = (float) size / mb;
            return String.format(f > 100 ? "%.0f MB" : "%.1f MB", f);
        } else if (size >= kb) {
            float f = (float) size / kb;
            return String.format(f > 100 ? "%.0f KB" : "%.1f KB", f);
        } else {
            return String.format("%d B", size);
        }

android SDK < 2.3

    /**
     * 文件系统上可用的空闲块的数量
     *
     * @param path
     * @return
     */
    public static long getAvailSize(String path) {
        if (TextUtils.isEmpty(path)) {
            return -1;
        }
        try {
            StatFs statFs = new StatFs(path);
            if (null != statFs) {
                return statFs.getBlockSizeLong() * statFs.getAvailableBlocksLong();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return -1;
    }


    /**
     * 文件系统上空闲的块总数,包括预留块
     *
     * @param path
     * @return
     */
    public static long getFreeSize(String path) {
        if (TextUtils.isEmpty(path)) {
            return -1;
        }
        try {
            StatFs statFs = new StatFs(path);
            if (null != statFs) {
                return statFs.getBlockSizeLong() * statFs.getFreeBlocksLong();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return -1;
    }

    /**
     * @param path
     * @return
     */
    public static long getTotalSize(String path) {
        if (TextUtils.isEmpty(path)) {
            return -1;
        }
        try {
            StatFs statFs = new StatFs(path);
            if (null != statFs) {
                return statFs.getBlockSizeLong() * statFs.getBlockCountLong();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return -1;
    }

android SDK > 2.3

    /**
     * @param path
     * @return
     */
    public static long getAvailSize2(String path) {
        if (TextUtils.isEmpty(path)) {
            return -1;
        }
        try {
            File dir = new File(path);
            return dir.getUsableSpace();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return -1;
    }

    /**
     * @param path
     * @return
     */
    public static long getFreeSize2(String path) {
        if (TextUtils.isEmpty(path)) {
            return -1;
        }
        try {
            File dir = new File(path);
            return dir.getFreeSpace();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return -1;
    }

    /**
     * @param path
     * @return
     */
    public static long getTotalSize2(String path) {
        if (TextUtils.isEmpty(path)) {
            return -1;
        }
        try {
            File dir = new File(path);
            return dir.getTotalSpace();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return -1;
    }

参考文章

  1. 获取android SDCard存储大小
  2. android 获得指定路径下可用存储大小

 历史上的今天

  1. 2023: Android Socket之客户端封装(0条评论)
  2. 2018: UML类图中属性的可见性简介(0条评论)
版权声明 1、 本站名称: 笔友城堡
2、 本站网址: https://www.biumall.com/
3、 本站部分文章来源于网络,仅供学习与参考,如有侵权,请留言

暂无评论

暂无评论...

随机推荐

陈忠实:马罗大叔

星期六回到家中,刚落坐,母亲说:“你马罗儿叔不在了。”“什么时候?”我问。“昨日夜里,还弄不清辰时卯时咽的气。”母亲叹了口气,“今日清早人才发觉。”这也许不奇怪。一个老光棍儿,夜里独自一个人睡在窑里,死一百次,大约也不会被谁及时发现的。尽管这样想,我的心里仍然禁不住悲哀起来了。“啥病也没添,...

[摘]Android中shape的用法详解

用代码生成图片,而且图片能随意的更改,既方便又节省空间,下面就介绍用shape生成自定义图形的方法步骤:在res/drawable下新建一个xml文件;在代码中引用这个xml文件,引用方式和图片一样。定义shape图形的语法如下:<?xml version="1.0" enc...

[摘]停止ListView滑动-Android

shui知道偶尔会要用到这个,目前我只试过第一种方式是ok,其他几个没有测试。摘抄内容give it a ACTION_CANCEL touchEvent, can stop the fling. it is easy.listView.dispatchTouchEvent(Motio...

Bootstrap4移除图标解决方法

我们知道Bootstrap3是支持的图标 ,但Bootstrap4 不支持。这是因为Bootstrap4 把图标移除了,取而代之建议使用其他的,比如 https://octicons.github.com/ 和http://fontawesome.io/如果你在升级Bootstrap4 ...

I-Cache与D-Cache的区别

前言文档中有关于芯片的介绍,其中一部分是最高运行频率2GHz,32KB L1 I-cache和32KB L1 D-cache ,L2 cache 512K。L1 Cache 表示一级缓存和L2 Cache 表示2级缓存是知道的,但是I-Cache和D-Cache就傻傻分不清了。因此参考网上文章...

GridView滚动条无法到底部

前言Android开发时GridView用于展示音乐文件或者视频图片缩略图时,特定个数时出现快速滚动条[fastScroll]无法滚动到底部问题,记录于此,方便自己查阅。正文GridView布局要求是2*4展示(也就是页面展示8个item),如果少于等于8个时隐藏快速滚动条,超过8个是就需要...