java获取文件实际大小

获取文件的大小 KB、MB、GB、BT

在做清理文件的时候发现,文件大小 和 文件的 占用空间 是不一样的(可以查看电脑上详细看到),通过 length()方法得到的是文件占用空间,下面提供文件大小的获取方式。单位是B。

FileInputStream fis = null;
String fileSize = "";
try {
    fis = new FileInputStream(f);
    fileSize = String.valueOf(fis.available());
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

但是看 available() 方法的返回值发现是int类型的

public int available() throws IOException {
        // Android-added: close() check before I/O.
        if (closed) {
            throw new IOException("Stream Closed");
        }
        return available0();
}

也就是说能计算到最大文件大小是2147483647B = 1.99GB

public static String getFileSize(long size){
    double cache = size / 1024f;
    String unit = "K";
    if (cache >= 1024f) {
        cache /= 1024f;
        unit = "M";
    }
    if (cache >= 1024f) {
        cache /= 1024f;
        unit = "G";
    }
    if (cache >= 1024f) {
        cache /= 1024f;
        unit = "T";
    }
    return new DecimalFormat("0.00").format(cache) + unit;
}

也就是说能计算到最大文件大小是2147483647B = 1.99GB

其实FileInputStream中还有一个方式获取 long 型的文件大小,fis.getChannel().size(),这种方式获取到的仍然是B为单位,换算后能计算8388607T大小的文件

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值