Java 1.6,如何获取指定目录中所有内容使用的总字节数

Java 1.6,如何获取指定目录中所有内容使用的总字节数,java,Java,假设有多个目录都存在于同一分区上。假设您想找到每个目录中所有内容使用的总字节数,有什么好方法?查看Java文件和Apache FileUtils,我只能获得有关分区的磁盘使用信息,但我需要的是能够将其限制到指定的目录 Example: Partition X: 100GB Root directories: /x/1/ /x/2/ /x/3/ Deeper directories can exist under each root director

假设有多个目录都存在于同一分区上。假设您想找到每个目录中所有内容使用的总字节数,有什么好方法?查看Java文件和Apache FileUtils,我只能获得有关分区的磁盘使用信息,但我需要的是能够将其限制到指定的目录

Example:

    Partition X: 100GB

    Root directories:

    /x/1/
    /x/2/
    /x/3/

Deeper directories can exist under each root directory:

/x/1/files/a/deeper/path/test.txt
    /x/2/files/test.txt
    /x/3/files/path/to/files/test.txt

Goal:

long byteSumForX1 = ??
假设上述3条路径存在于分区x下,我希望能够找到上面指定的每个根目录使用的总字节数。总数需要是递归的,包括根目录中的所有文件和目录


有什么想法吗?我更愿意利用一些现有的库来实现这一点,如果有(假设/希望有)

最简单的解决方案是使用Apache Commons的
FileUtils
类中的方法。引用javadocs:

递归计算目录的大小(所有文件的长度之和)

参数:目录-要检查的目录,不能为null

返回:以字节为单位的目录大小,如果目录受安全限制,则返回0


大多数工具只提供文件的长度,而不是实际使用的大小。例如,一个1字节的文件可以使用512B或4KB的磁盘空间。名称较长的文件可能会占用更多的磁盘空间(取决于文件系统类型)。如果您有一个稀疏文件,其长度可能比实际使用的大小大很多倍(可能是1000倍)。