java获取文件实际大小

在清理文件时发现文件大小和占用空间不同,length()方法得到的是文件占用空间。介绍了文件大小的获取方式,单位为B。available()方法返回值为int类型,最大能计算1.99GB文件大小,还提到FileInputStream中fis.getChannel().size()可获取long型文件大小,能计算8388607T大小文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

获取文件的大小 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大小的文件

Java获取IDB文件实际占用的磁盘空间,可以使用`java.io.File`类中的`length()`方法获取文件大小,但这只是文件的逻辑大小。要获取文件实际占用的磁盘空间,可以使用`java.nio.file.Files`类中的`getFileStore`方法结合`FileStore`类来获取文件所在的文件存储空间信息。 以下是一个示例代码,展示了如何获取IDB文件实际占用磁盘空间: ```java import java.io.File; import java.io.IOException; import java.nio.file.FileStore; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; public class IDBFileSize { public static void main(String[] args) { // IDB文件的路径 String filePath = "path/to/your/file.idb"; // 创建File对象 File file = new File(filePath); // 获取文件大小 long fileSize = file.length(); System.out.println("文件大小: " + fileSize + " 字节"); // 获取文件路径 Path path = Paths.get(filePath); try { // 获取文件存储信息 FileStore store = Files.getFileStore(path); // 获取实际占用磁盘空间 long totalSpace = store.getTotalSpace(); long unallocatedSpace = store.getUnallocatedSpace(); long usableSpace = store.getUsableSpace(); System.out.println("总空间: " + totalSpace + " 字节"); System.out.println("未分配空间: " + unallocatedSpace + " 字节"); System.out.println("可用空间: " + usableSpace + " 字节"); } catch (IOException e) { e.printStackTrace(); } } } ``` 这个示例代码首先创建了一个`File`对象并使用`length()`方法获取文件大小。然后,它使用`Paths.get()`方法获取文件路径,并使用`Files.getFileStore()`方法获取文件存储信息。最后,它打印出文件大小、总空间、未分配空间和可用空间。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值