ublic class MemorySpaceCheck {
/**
* 计算剩余空间
* @param path
* @return
*/
public static String getAvailableSize(String path)
{
StatFs fileStats = new StatFs(path);
fileStats.restat(path);
return String.valueOf(fileStats.getAvailableBlocks() * fileStats.getBlockSize()); // 注意与fileStats.getFreeBlocks()的区别
// return getPrintSize((long) fileStats.getFreeBlocks() * fileStats.getFreeBlocks()); // 注意与fileStats.getFreeBlocks()的区别
}
/**
* 跟上面的方法含义一样,返回值和方法名不同
* @param path
* @return
*/
public static double getAvailableSizes(String path)
{
StatFs fileStats = new StatFs(path);
fileStats.restat(path);
return Double.valueOf(fileStats.getAvailableBlocks() * fileStats.getBlockSize()); // 注意与fileStats.getFreeBlocks()的区别
// return getPrintSize((long) fileStats.getFreeBlocks() * fileStats.getFreeBlocks()); // 注意与fileStats.getFreeBlocks()的区别
}
/**
* 计算总空间
* @param path
* @return
*/
public static String getTotalSize(String path)
{
StatFs fileStats = new StatFs(path);
fileStats.restat(path);
return String.valueOf(fileStats.getBlockCount() * fileStats.getBlockSize());
}

/**
* 计算SD卡的剩余空间
* @return 剩余空间
*/
public static String getSDAvailableSize()
{
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
{
return getAvailableSize(Environment.getExternalStorageDirectory().toString());
}

return null;
}

/**
* 计算系统的剩余空间
* @return 剩余空间
*/
public static String getSystemAvailableSize()
{
// context.getFilesDir().getAbsolutePath();
return getAvailableSize("/data");
}
/**
* 是否有足够的空间
* @param filePath 文件路径,不是目录的路径
* @return
*/
public static boolean hasEnoughMemory(String filePath)
{
File file = new File(filePath);
long length = file.length();
if (filePath.startsWith("/sdcard") || filePath.startsWith("/mnt/sdcard"))
{
return Integer.parseInt(getSDAvailableSize()) > length;
}
else
{
return Integer.parseInt(getSystemAvailableSize()) > length;
}

}

/**
* 获取SD卡的总空间
* @return
*/
public static String getSDTotalSize()
{
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
{
return getTotalSize(Environment.getExternalStorageDirectory().toString());
}

return null;
}

/**
* 获取系统可读写的总空间
* @return
*/
public static String getSysTotalSize()
{
return getTotalSize("/data");
}

/**
* 格式化单位
* 转换为B,GB等等
* @param size
* @return
*/
public static String getFormatSize(double size) {
double kiloByte = size / 1024;
if (kiloByte < 1) {
return size + "Byte";
}

double megaByte = kiloByte / 1024;
if (megaByte < 1) {
BigDecimal result1 = new BigDecimal(Double.toString(kiloByte));
return result1.setScale(1, BigDecimal.ROUND_HALF_UP)
.toPlainString() + "KB";
}

double gigaByte = megaByte / 1024;
if (gigaByte < 1) {
BigDecimal result2 = new BigDecimal(Double.toString(megaByte));
return result2.setScale(1, BigDecimal.ROUND_HALF_UP)
.toPlainString() + "MB";
}

double teraBytes = gigaByte / 1024;
if (teraBytes < 1) {
BigDecimal result3 = new BigDecimal(Double.toString(gigaByte));
return result3.setScale(1, BigDecimal.ROUND_HALF_UP)
.toPlainString() + "GB";
}
BigDecimal result4 = new BigDecimal(teraBytes);
return result4.setScale(1, BigDecimal.ROUND_HALF_UP).toPlainString()
+ "TB";
}

Android为TV端助力 计算每个目录剩余空间丶总空间以及SD卡剩余空间的更多相关文章

  1. Android为TV端助力 关于4.0之后不能直接获取SD卡外部存储路径的问题

    Environment.getExternalStorageDirectory()是Android 2.x时代的产物,那时Android主流设备只有很小的内置存储器,然后都会外置一张sd卡,那时这个方 ...

  2. Android为TV端助力 双缓存机制

    废话不多说,直接贴代码! 所谓的双缓存,第一就是缓存在内存里面,第二就是缓存在SD卡里面,当你需要加载数据时,先去内存缓存中查找,如果没有再去SD卡中查找,并且用户可以自选使用哪种缓存! 缓存内存和缓 ...

  3. Android为TV端助力 MediaPlayer的一些使用方法简历

    这里提供一些MediaPlayer的简单方法,方便以后熟练的使用它! 1)如何获得MediaPlayer实例: 可以使用直接new的方式: MediaPlayer mp = new MediaPlay ...

  4. Android为TV端助力 apk静默安装

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/47803149 之前有很多朋友都问过我,在Android系统中怎样才能实现静默安装呢 ...

  5. Android为TV端助力 http下载视频到指定目录

    public void httpget(String uri){ HttpURLConnection connection = null; FileOutputStream fos = null; F ...

  6. Android为TV端助力 转载:RecyclerView分页加载

    package com.android.ryane.pulltoloaddata_recyclerview; import android.os.Handler;import android.os.L ...

  7. Android为TV端助力 外挂字幕(设置颜色,大小,位置,微调字幕)

    前提摘要:  可以给电影加字幕,目前支持srt和ass格式, 功能摘要:  支持微调字幕,设置大小,颜色,位置 1 .字幕解析类 package com.hhzt.iptv.lvb_x.utils; ...

  8. Android为TV端助力(转载)

    作者地址http://www.jianshu.com/u/63915ef020e2 针对Android Tv的自定义RecyclerView 作者 wenju_song 关注 2016.12.09 1 ...

  9. Android为TV端助力 清除本应用里的各种数据的方法

    public class DataCleanManager { /** * * 清除本应用内部缓存(/data/data/com.xxx.xxx/cache) * * * * @param conte ...

随机推荐

  1. 简介 - MongoDB

    1- NoSQL简介 NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL": NoSQL是指非关系型的数据库,有时也称作Not Only SQL的缩写, ...

  2. Tools - 负载性能测试工具JMeter

    JMeter简介 HomePage:http://jmeter.apache.org/ Apache JMeter是Apache组织开发的基于Java的开源负载性能测试工具. 可以用于对服务器.网络应 ...

  3. 解决Python中PyCharm导入模块时,模块名下出现红色波浪线的问题

    在博主第一次在PyCharm中导入模块时,模块名下出现红色波浪线,不影响程序执行,但强迫症忍不了 以下是解决办法 Let's do it ... 进入设置,找到Console下的Python Cons ...

  4. ExternalException (0x80004005): 无法执行程序

    今天更新系统上传到阿里云服务器,报错如下: “/”应用程序中的服务器错误. 组策略阻止了这个程序.要获取详细信息,请与系统管理员联系. 说明: 执行当前 Web 请求期间,出现未经处理的异常.请检查堆 ...

  5. mysql 开发进阶篇系列 49 表的数据导出(into outfile,mysqldump)

    一.概述 在数据库的日常维护中,表的导入和导出是很频繁的操作,本篇讲解如何使用导入功能,并以案例为演示.某些情况下,需要将表里的数据导出为某些符号分割的纯数据文本,而不是sql语句,比如:(1)用来作 ...

  6. mysql 开发基础系列13 选择合适的数据类型(下)

    一.  BloB和Text 1. 合成索引 合成索引可以提高大文本字段BLOB和Text的查询性能, 合成索引是在表中增加一个字段存放散列值,这种技术只能用于精确匹配的查询,可以使用md5()或sha ...

  7. DataCleaner(4.5)第二章

    Chapter 2. Getting started with DataCleaner desktop Table of Contents |--Installing the desktop appl ...

  8. Go基础系列:defer、panic和recover

    defer关键字 defer关键字可以让函数或语句延迟到函数语句块的最结尾时,即即将退出函数时执行,即便函数中途报错结束.即便已经panic().即便函数已经return了,也都会执行defer所推迟 ...

  9. (1)编译安装lamp三部曲之apache-技术流ken

    简介 采用yum安装lamp简单,快捷,在工作中也得到了普遍应用.但是如果我们需要某些特定模块功能,以及制定安装位置等,就需要用到编译安装了,接下来将编译安装lamp之apache. 系统环境及服务版 ...

  10. asp.net-常用服务器控件-20180329

    常用服务器控件 1.文本类型控件 Label控件 TextBox控件 2.按钮类型控件 Button控件 ImageButton控件 3.选择类型控件 CheckBox控件 RadioButton控件 ...