目录

前言

代码功能:获取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、 本站名称: 91易搜
2、 本站网址: 91es.com3xcn.com[备用域名]
3、 本站内容: 部分来源于网络,仅供站长学习和参考,若侵权请留言

暂无评论

暂无评论...

随机推荐

王小波:卡尔维诺与未来的一千年

朋友寄来一本书,卡尔维诺的《未来千年备忘录》,我正在看着。这本书是他的讲演稿,还没来得及讲,稿也没写完,人就死了。这些讲演稿分别冠以如下题目:轻逸、迅速、易见、确切和繁复。还有一篇"连贯",没有动笔写,所以我整天在捉摸他到底会写些什么,什么叫做"连贯"。卡尔维诺指出,在未来的一千年里,文学会继续繁荣...

西蒙·阿米德奇 :黄昏

你十二三岁时从后门溜出去还不太晚,你许诺着不会走太久,不会太远 有一天你将知悉沿途那些树的名字你挑两条溪流之间的小路往下走这里是沃德峡谷,这里是洛伊德悬崖 山顶还燃着阳光黄昏在低坡前撵上了你黄昏的指节在脊柱上抚过 转身,回家吧孩子睡在一张太...

MediaPlayer源码介绍3

前言我们继续介绍MediaPlayer的源码,继《MediaPlayer源码介绍2》和《mediaserver的启动》后,MediaPlayer也进入了MediaPlayerService的接口调用中。今天我们继续以setDataSource为例,看看其在MediaPlayerService的...

徐志摩:再别康桥

再别康桥轻轻的我走了,正如我轻轻的来;我轻轻的招手,作别西天的云彩。 那河畔的金柳,是夕阳中的新娘;波光里的艳影,在我的心头荡漾。 软泥上的青荇,油油的在水底招摇;在康河的柔波里,我甘心做一条水草! 那榆荫下的一潭,不是清泉,是天上虹...

Android Studio工程中.idea没有*.iml文件

前言我使用其他同事电脑时,Android Studio(Android Studio Dolphin | 2021.3.1 Patch 1)的版本新建的工程中.idea目录没有对应module和*.iml。百度或谷歌后解决了。记录一下,方便自己查阅。正文解决这个问题很简单,就是Androi...

[代码片]获取状态栏高度和导航栏高度

前言记录一下,或许后面有用。正文直接上代码 /** * 获取状态栏高度 * * @return */ public int getBarHeight(String name) { int result = 0; ...