博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《android-文件大小》
阅读量:6614 次
发布时间:2019-06-25

本文共 4714 字,大约阅读时间需要 15 分钟。

hot3.png

import android.util.Log;import java.io.File;import java.io.FileInputStream;import java.text.DecimalFormat;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 file 文件     * @return 计算好的带B、KB、MB、GB的字符串     */    public static String getAutoFileOrFilesSize( File file) {        long blockSize = 0;        try {            if (file.isDirectory()) {                blockSize = getFileSizes(file);            } else {                blockSize = getFileSize(file);            }        } catch (Exception e) {            e.printStackTrace();            Log.e("获取文件大小", "获取失败!");        }        return FormetFileSize(blockSize);    }    /**     * 获取指定文件大小     *     * @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;    }}

因为不是自己写的,就不做过多的阐述。另外附上原文

转载于:https://my.oschina.net/u/1269023/blog/734207

你可能感兴趣的文章
XML转义字符
查看>>
mysql设置字符集CHARACTER SET
查看>>
Perl完全自学手册图文教程
查看>>
python(5)字典
查看>>
wordpress拿WebShell
查看>>
getline函数(精华版)
查看>>
互联网辅助代理IP软件的应用需守牢数据安全的“底线”
查看>>
程序猿生存指南-10 敲定工作
查看>>
LDAP密码认证例子
查看>>
2019程序媛面试之美少女战士
查看>>
黑马程序员——内部类
查看>>
校园的早晨
查看>>
oracle取前几行|中间几行|后几行
查看>>
16.1 Tomcat介绍
查看>>
QuickBI助你成为分析师——数据源FAQ小结
查看>>
十周三次课
查看>>
S/4HANA服务订单Service Order的批量创建
查看>>
2008 AD 复制有防火墙要开什么端口
查看>>
IT服务管理中的知识库建设
查看>>
【Lucene】Lucene通过CustomScoreQuery实现自定义评分
查看>>