Java 获取文件大小

2025 年 8 月 12 日 | 阅读 6 分钟

在本节 Java IO 的前面部分,我们讨论了各种文件操作,例如写入文件、读取文件、重命名文件等。在本节中,我们将讨论如何通过 Java 程序获取文件大小。

在 Java 中获取文件大小有以下几种方法。

  • 使用 Java IO
  • 使用 NIO 库
    1. Files.size() 方法
    2. FileChannel.size() 方法
  • 使用 Apache Commons IO

使用 Java IO

Java IO 包提供了处理文件相关操作的类。同样,Java IO 包提供了 File 类,其中包含 length() 方法。该方法以字节为单位返回指定文件的大小。如果文件表示一个目录,则返回一个不确定的值。如果您使用的是 Java 7 或更早版本,则可以使用此方法。

Java 的 File 类用于表示文件和目录路径名的抽象表示。它属于 java.io 包。

在下面的程序中,我们创建了 Files 类的构造函数,并将文件路径作为参数传递。我们使用了该类的以下方法:

exists():该方法检查此抽象路径名所表示的文件或目录是否存在。仅当指定的路径存在时,它才返回 true,否则返回 false。

isFile():该方法检查此抽象路径名所表示的文件是否为普通文件。文件是普通的,如果它不是目录,并且满足其他系统依赖的条件。Java 应用程序创建的任何非目录文件都保证为普通文件。仅当此抽象路径名所表示的文件存在且为普通文件时,它才返回 true,否则返回 false。

length():该方法返回此抽象路径名所表示的文件的长度。如果此路径名表示一个目录,则返回值不确定。此抽象路径名所表示的文件长度(以字节为单位),如果文件不存在则为 0L。

让我们看 Java 程序。

GetFileSize1.java

输出

Java Get File Size

使用 Java NIO 库

NIO 是另一个 Java IO 库。与标准 IO 库相比,它提供了不同的 I/O 处理方式。它是一个替代的 IO API。该库基于面向缓冲区的、面向通道的 I/O 操作方法。

Files.size() 方法

Java NIO 库提供了一个名为 Files 的类。它属于 java.nio.file 包。该类提供了操作文件、目录或其他文件类型的静态方法。在大多数情况下,该类中定义的方法会将文件操作委托给关联的文件系统提供程序。

为了获取文件大小,Files 类提供了 size() 方法。size() 方法的语法是

该方法接受文件的路径作为参数,并以字节为单位返回文件大小。

GetFileSize2.java

输出

Java Get File Size

FileChannel.size() 方法

Java NIO 库提供了一个名为 FileChannel 的类。它是一个抽象类,属于 java.nio.channels 包。该类提供了用于读取、写入、映射和操作文件的通道。

它提供了 size() 方法来获取文件大小。它以字节为单位返回此通道文件的当前大小。

让我们看 Java 程序。

GetFileSize3.java

输出

1382132 bytes   

使用 Apache Commons IO

Apache commons 是一个第三方库,提供通用的文件操作工具。这些类属于 org.apache.commons.io 包。

使用 FileUtils.sizeOf() 方法

该类提供 sizeOf() 方法来获取文件大小(以字节为单位)。

语法

该方法接受一个文件或目录作为参数。请注意,参数不能为 null。如果参数是常规文件,则返回文件长度(以字节为单位)。如果参数是目录,则递归计算目录的大小(字节)。

注意:它不检测溢出。因此,由于溢出,我们可能会得到负文件大小。

在运行以下程序之前,请确保已将 commons-io-2.4.jar 文件添加到项目中。

GetFileSize4.java

输出

The file size is: 65042816 bytes