public class FileSizeUtil {public static final int SIZETYPE_B = 1;// 获取文件大小单位为B的double值public static final int SIZETYPE_KB = 2;// 获取文件大小单位为KB的double值public static final int SIZETYPE_MB = 3;// 获取文件大小单位为MB的double值public static final int SIZETYPE_GB = 4;// 获取文件大小单位为GB的double值/*** 获取文件指定文件的指定单位的大小** @param filePath*            文件路径* @param sizeType*            获取大小的类型1为B、2为KB、3为MB、4为GB* @return double值的大小*/public static String getFileOrFilesSize(String filePath) {File file = new File(filePath);long blockSize = 0;try {if (file.isDirectory()) {blockSize = getFileSizes(file);} else {blockSize = getFileSize(file);}} catch (Exception e) {e.printStackTrace();Log.e("获取文件大小", "获取失败!");}return formatFileSize(blockSize);}/*** 调用此方法自动计算指定文件或指定文件夹的大小** @param filePath*            文件路径* @return 计算好的带B、KB、MB、GB的字符串*/public static String getAutoFileOrFilesSize(String filePath) {File file = new File(filePath);long blockSize = 0;try {if (file.isDirectory()) {blockSize = getFileSizes(file);} else {blockSize = getFileSize(file);}} catch (Exception e) {e.printStackTrace();Log.e("获取文件大小", "获取失败!");}return formatFileSize(blockSize);}/*** 获取指定文件大小** @param* @return* @throws Exception*/private static long getFileSize(File file) throws Exception {long size = 0;if (file.exists()) {FileInputStream fis = null;fis = new FileInputStream(file);size = fis.available();} else {file.createNewFile();Log.e("获取文件大小", "文件不存在!");}return size;}/*** 获取指定文件夹** @param f* @return* @throws Exception*/private static long getFileSizes(File f) throws Exception {long size = 0;File flist[] = f.listFiles();for (int i = 0; i < flist.length; i++) {if (flist[i].isDirectory()) {size = size + getFileSizes(flist[i]);} else {size = size + getFileSize(flist[i]);}}return size;}/*** 转换文件大小** @param fileS* @return*/private static String FormetFileSize(long fileS) {DecimalFormat df = new DecimalFormat("#.00");String fileSizeString = "";String wrongSize = "0B";if (fileS == 0) {return wrongSize;}if (fileS < 1024) {fileSizeString = df.format((double) fileS) + "B";} else if (fileS < 1048576) {fileSizeString = df.format((double) fileS / 1024) + "KB";} else if (fileS < 1073741824) {fileSizeString = df.format((double) fileS / 1048576) + "MB";} else {fileSizeString = df.format((double) fileS / 1073741824) + "GB";}return fileSizeString;}/*** 转换文件大小,指定转换的类型** @param fileS* @return*/private static String formatFileSize(long fileS){DecimalFormat df = new DecimalFormat("#.00");String fileSizeString = "";String wrongSize="0B";if(fileS==0){return wrongSize;}if (fileS < 1024){fileSizeString = df.format((double) fileS) + "B";}else if (fileS < 1048576){fileSizeString = df.format((double) fileS / 1024) + "KB";}else if (fileS < 1073741824){fileSizeString = df.format((double) fileS / 1048576) + "MB";}else{fileSizeString = df.format((double) fileS / 1073741824) + "GB";}if (fileS < 1048576*2) { // 限制图片大小不能大于2MBreturn fileSizeString;}return null;}
}

android 计算图片大小相关推荐

  1. php怎么统计图片的大小,PHP按照比例计算图片大小

    /** * 按照比例计算图片大小 */ function chang_image_size($img_w, $img_h, $max_w, $max_h) { $CI =& get_insta ...

  2. 微信小程序 动态计算图片大小

    微信小程序 动态计算图片大小 方法一 使用图片的mode属性 手动计算 给图片绑定事件bind:load,回调函数名为onImgLoad 编写回调函数,width为340是图片容器的宽度 method ...

  3. Android—Bitmap图片大小计算、压缩与三级缓存

    Bitmap对象占用内存大小: bitmap.getByteCount() 图片所占内存大小计算方式:图片长度 x 图片宽度 x 一个像素点占用的字节数. Android Bitmap使用的三种颜色格 ...

  4. Android文件夹占用空间分析,关于Android中图片大小、内存占用与drawable文件夹关系的研究与分析...

    从上一篇文章<Android屏幕适配全攻略>写完之后,经常会有朋友问我这个问题:"能不能一个App只提供一套切图适应所有的分辨率呢?"我觉得有必要写一篇文章来研究一下这 ...

  5. 关于Android中图片大小、内存占用与drawable文件夹关系的研究与分析

    从上一篇文章<Android屏幕适配全攻略>写完之后,经常会有朋友问我这个问题:"能不能一个App只提供一套切图适应所有的分辨率呢?"我觉得有必要写一篇文章来研究一下这 ...

  6. Android 保持图片大小,扩大button点击区域

    button图片很小时,点击区域会很小,解决方法: 1.使用ImageButton代替Button.使用src加载图片,图片会保持大小加载.而用background加载会铺满按钮大小.然后此时可用pa ...

  7. 通过图片像素计算图片大小的方法

    图像大小在相机下通常表现为"像素",例如1200万像素的相机,一张图片是3000*4000: 而保存成bmp的无压缩格式图片时,存到本地上我们更加习惯的是以"内存&quo ...

  8. android 裁剪图片大小 控制图片尺寸

    用BitmapFactory获取适合屏幕大小的图片 和自带的图片裁剪工具 package com.lin.image;import android.app.Activity; import andro ...

  9. android drawable 图片大小,不同的drawable文件夹下图片加载到内存后图片尺寸大小的分析...

    先说结论: 不同drawable文件下图片在同一手机图片尺寸是不同的 同一个drawable文件夹下的图片在不同分辨率的手机图片尺寸是不同的 先聊下DP 要在密度不同的屏幕上保留界面的可见尺寸,您必须 ...

最新文章

  1. C#控制远程计算机的服务
  2. linux用户和组、权限常用命令
  3. 使用JAVA来获得本日,本周,本月,本年的时间信息
  4. 移动项目工作笔记0001---使用uni-app开发移动端应用
  5. iframe弹出层中关闭包含iframe的div(子页面调用父页面js函数)
  6. oschina mysql limit_【MySQL】LIMIT 的用法
  7. python取非_Python:取非矩形区域的GLCM
  8. eclipse删除mysql数据库_在Eclipse中测试MySQL-JDBC(4)删除数据库中的数据【D】
  9. 多尺度地理加权回归(MGWR),地理加权回归(GWR),最小二乘法(OLS)回归模型的对比分析
  10. 【终终极版】linux(Ubuntu)下wineQQ的安装办法
  11. 研发岗和产品岗的时间管理策略总结-大局观概述
  12. 利用 nslookup 解析 DNS 记录
  13. GFS 区域风场解析问题
  14. MinIO入门-02 SpringBoot 整合MinIO并实现文件上传
  15. cmdy5(cmdy5庆余年)
  16. 简单win32程序创建控件
  17. [总结] 半监督学习方法: 协同训练类协同训练(Co-training)
  18. 近视也可以用计算机来算,近视眼度数怎么算的 5个方法教你掌握
  19. 什么是8K视频技术!8K视频测试解决方案
  20. 详解sd协议以及裸机和u-boot中的sd卡驱动(2)

热门文章

  1. Storm专题一、Storm DRPC 分布式计算
  2. java获取当前年份(java获取当前年份后两位)
  3. 如何学习一门新的框架
  4. 什么叫幂等?如何实现幂等性?
  5. 作业周转时间以及平均等待时间
  6. Transmitting Network Data Using Volley(使用Volley框架传输网络数据)
  7. java -- 函数/方法
  8. Android后台Kill(二):ActivityManagerService与App现场恢复机制
  9. 我们为什么需要信息增益比,而不是信息增益?
  10. CSMA/CD协议总结最短帧长计算