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>