Java如何像Linux的命令”du”一样获取文件的磁盘空间?

Java how to get file's disk space like Linux's command "du"?

我知道 Java 可以使用 File.length(), FileChannel.size()RandomAccessFile.length() 来获取文件的长度,但这等于 Linux 的命令"ls"。但是,当我创建具有以下特定长度的文件时:

1
2
    RandomAccessFile randomAccessFile = new RandomAccessFile(filePath,"rw");
    randomAccessFile.setLength(10485760);

并使用"ls -l filePath",我得到文件的长度是 10485760,但使用"du filePath"只能得到 0。

那么,如何使用Java获取文件的实际使用磁盘空间呢?


根据对与 Windows 相关的问题的回答,您如何获取磁盘上的文件,而不仅仅是 Java 中的文件大小?,没有办法通过一个 Java 命令来完成,您可以运行 Linux du来自 Java,看看这里的技术 How to run Linux commands in Java?。