Android 获取文件大小

摘要:
intsizeType){Filefile=newFile(filePath);try{if(file.isDirectory()){blockSize=getFileSize(文件);fis=newFileInputStream(文件),size=fis.available();for(inti=0;StringfileSizeString=“”;

android 获取文件夹、文件的大小 以B、KB、MB、GB 为单位

FileSizeUtil 

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 double getFileOrFilesSize(String filePath,int sizeType){
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 FormetFileSize(blockSize, sizeType);
}
/**
* 调用此方法自动计算指定文件或指定文件夹的大小
* @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 FormetFileSize(blockSize);
}
/**
* 获取指定文件大小
* @param f
* @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 
 * @param sizeType 
 * @return
 */
private static double FormetFileSize(long fileS,int sizeType)
{
DecimalFormat df = new DecimalFormat("#.00");
double fileSizeLong = 0;
switch (sizeType) {
case SIZETYPE_B:
fileSizeLong=Double.valueOf(df.format((double) fileS));
break;
case SIZETYPE_KB:
fileSizeLong=Double.valueOf(df.format((double) fileS / 1024));
break;
case SIZETYPE_MB:
fileSizeLong=Double.valueOf(df.format((double) fileS / 1048576));
break;
case SIZETYPE_GB:
fileSizeLong=Double.valueOf(df.format((double) fileS / 1073741824));
break;
default:
break;
}
return fileSizeLong;
}

免责声明:文章转载自《Android 获取文件大小》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇SpringMVC入门(二)VS调试快捷键下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Android编程初涉,以控制摄像头为例

国庆假期期间王老师给我们一天的时间去熟悉Android编程,时间非常的短,当然内心其实并不想做的,不过本着既然做就尽量做好的原则呢,忙了几个小时把王老师要求的简单功能实现了一下,当然因为是只是熟悉一下就上网查了些资料粘贴复制了一下,设计思想和库并不熟悉,下面就实现控制摄像头的功能代码和《第一行代码——Android》和《操作系统概念》两本书的内容简单的展开...

将excel的.xlsx文件转成数据库文件.db的方法

1.下载好工具SQLite Expert Professional 3 ,晚上有很多,自行百度。 2.打开.xls文件,将文件另存为.csv文件。说明一下: 可以将xls文件看作是数据库里的一个表。所以,表名和.xls文件名称一直,里面的字段,就是.xls文件中的字段。 3.打开SQLite Expert Professional 3,新建一个数据库,数据...

文件的上传&amp;amp;预览&amp;amp;下载学习(一)

注:主要是说明后端逻辑和数据库表设计 1.当前主流的几种文件上传&预览&下载方式 把文件直接存储在服务器 分布式存储OSS,比如阿里OSS、Minio 2.数据库表设计 由于文件都是跟业务关联的,比如评论里面掺杂评论图片,常规的设计就是在'评论表'添加上传'图片名称'字段和'图片相对路径',在上传成功后返回给前端 1.1 如果是加入多个...

.NetCore WebAPI初尝试和部署IIS

.NetCore已经相当熟悉了,在此做一个简单的demo尝试,方便帮助新学习的朋友的,顺便也记录下有些小坑,废话不多说直接上代码,(顺便说下小demo结合了sqlsugar ORM框架从数据库获取了数据) 1、新建一个.net core WebAPI项目 2、可直接运行,结果如下 3、接下来我们新建一个API,命名ReplenishLrControll...

默認打開pr_debug和dev_dbg

作者:彭東林 郵箱:pengdonglin137@163.com 日期:2016-08-26 18:04:14 在進行Linux驅動開發時經常見到使用pr_debug和dev_dbg打印驅動的log,如果在內核配置時選擇了CONFIG_DYNAMIC_DEBUG宏,那麼就可以利用類似下面的命令打開對應文件的log: echo -n "file xxx.c...

流量取证-流量中提取文件

以前整理的一些东西,拿出来做备忘 PCAP 报文就是抓取实际在网络中传输的图片,视频等数据,然后以PCAP 格式存储形成的文件。工作中对离线的数据包进行回溯分析,有时会遇到将 PCAP 中的码流还原成相应的图片、视频、邮件等原有格式的需求。 从流量中取证文件大部分情况下是为了提取流量中的可执行程序。 1、 tcpxtract 安装: apt-get ins...