获取java中文件的实际磁盘使用情况

时间:2015-08-13 10:39:33

标签: java file

我正在使用java.io.File.length()方法来获取文件的大小。

但是对于稀疏文件,此值可能与该文件使用的实际磁盘空间非常不同。

有没有办法获得文件的实际磁盘使用量?

文件的外观大小是文件中的字节数。例如,包含单词'zoo'而没有换行的文件当然会具有3的表观大小。但是,使用此命令创建的稀疏文件:

dd bs=1 seek=2GiB if=/dev/null of=big

的表观大小为2 GiB,但在大多数现代系统中,它实际上几乎没有磁盘空间。

1 个答案:

答案 0 :(得分:2)

使用jnr-posix。用法示例:

import jnr.posix.*;

final POSIX p = POSIXFactory.getPOSIX();
final int S_BLKSIZE = 512; // from sys/stat.h
final FileStat stat = p.stat("/some/file.txt");
final long bytes = stat.blocks() * S_BLKSIZE;