文件大小用于衡量计算机文件包含多少数据,或者消耗其多少存储空间。 文件大小通常以字节表示。

在 Java 中,我们可以使用FileFileChannelFiles和 Apache Commons 的FileUtils确定文件的大小。 在新代码中,应该使用Files类。

示例中将使用位于src/main/resources目录中的words.txt文件:

1
green, chair, pen, computer, apple, book, scissors

使用File的文件大小

Filelength()方法返回文件大小。 这是找出 Java 文件大小的最古老的 API。

JavaFileSizeEx.java : 使用Filelength()方法确定文件大小

1
2
3
4
5
6
7
8
9
10
11
12
public class JavaFileSizeEx {

public static void main(String[] args) {

String fileName = "src/main/resources/words.txt";

File f = new File(fileName);
long fileSize = f.length();

System.out.format("The size of the file: %d bytes", fileSize);
}
}

使用FileChannel的文件大小

FileChannel具有size()方法来确定文件的大小。

JavaFileSizeEx2.java:使用FileChannelsize()方法确定文件大小。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class JavaFileSizeEx2 {

public static void main(String[] args) throws IOException {

String fileName = "src/main/resources/words.txt";

Path filePath = Paths.get(fileName);

FileChannel fileChannel = FileChannel.open(filePath);
long fileSize = fileChannel.size();

System.out.format("The size of the file: %d bytes", fileSize);
}
}

使用Files的文件大小

Files具有size()方法来确定文件的大小。 这是最新的 API,建议用于新的 Java 应用。

JavaFileSizeEx3.java:使用Files.size()方法确定文件大小。

1
2
3
4
5
6
7
8
9
10
11
12
public class JavaFileSizeEx3 {

public static void main(String[] args) throws IOException {

String fileName = "src/main/resources/words.txt";

Path filePath = Paths.get(fileName);
long fileSize = Files.size(filePath);

System.out.format("The size of the file: %d bytes", fileSize);
}
}

FileUtils的文件大小

在最后一个示例中,我们使用 Apache Commons 的FileUtils确定文件大小。 查找文件大小的方法是sizeOf()

此示例需要commons-io依赖项。

1
2
3
4
5
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>

JavaFileSizeEx4.java:使用 Apache Commons 的FileUtils.sizeOf()方法确定文件大小

1
2
3
4
5
6
7
8
9
10
11
12
public class JavaFileSizeEx4 {

public static void main(String[] args) throws IOException {

String fileName = "src/main/resources/words.txt";
File f = new File(fileName);

long fileSize = FileUtils.sizeOf(f);

System.out.format("The size of the file: %d bytes", fileSize);
}
}