Java如何计算目录大小?
在此示例中,我们将使用ApacheCommonsIO库获取或计算目录的总大小。FileUtilsCommonsIO提供的课程可以帮助我们实现这一目标。
我们可以使用的第一种方法是FileUtils.sizeOfDirectory(),它递归计算目录的大小。它以File代表目录的对象作为参数并返回long值。如果目录具有安全限制,则此方法返回0。如果目录大小大于,则返回负值Long.MAX_VALUE。
您也可以使用该FileUtils.sizeOfDirectoryAsBigInteger()方法。此方法返回的结果BigInteger与方法名称描述相同。作为第一种方法,0当目录具有安全限制时,该方法也会返回。
上述两种方法均以字节为单位返回目录大小。如果您想要更大的可读性,可以使用该FileUtils.byteCountToDisplaySize()方法,它将字节值转换为1MB,1GB之类的值。
package org.nhooo.example.commons.io; import org.apache.commons.io.FileUtils; import java.io.File; import java.math.BigInteger; public class DirectorySizeSample { public static void main(String[] args) { //sizeOfDirectory File tempDir = new File("/Users/wayan/Temp"); long size = FileUtils.sizeOfDirectory(tempDir); System.out.println("TempDir size = " + size + " bytes"); System.out.println("TempDir size = " + FileUtils.byteCountToDisplaySize(size)); //sizeOfDirectoryAsBigInteger() File dropboxDir = new File("/Users/wayan/Dropbox"); BigInteger sizeBig = FileUtils.sizeOfDirectoryAsBigInteger(dropboxDir); System.out.println("DropboxDir size = " + sizeBig); System.out.println("DropboxDir size = " + FileUtils.byteCountToDisplaySize(sizeBig)); } }
上面的代码片段的结果:
TempDir size = 514239345 bytes TempDir size = 490 MB DropboxDir size = 6184 DropboxDir size = 6 KB
Maven依赖
<!-- http://repo1.maven.org/maven2/commons-io/commons-io/2.6/commons-io-2.6.jar --> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.6</version> </dependency>