1 简介
本文讨论如何用Java 7、Java8、Apache Common IO获取文件大小。
最后,介绍如何将文件大小转换为一个可读的、易于人理解的大小描述。
2 标准Java IO
使用File.length()
private long getFileSize(File file) {
long length = file.length();
return length;
}
测试一下:
@Test
public void whenGetFileSize_thenCorrect() {
long expectedSize = 12607;
File imageFile = new File("src/test/resources/image.jpg");
long size = getFileSize(imageFile);
assertEquals(expectedSize, size);
}
如上,大小按字节计算。
3 用Java NIO
下面的代码用FileChannel.size()
@Test
public void whenGetFileSizeUsingNioApi_thenCorrect() throws IOException {
long expectedSize = 12607;
Path imageFilePath = Paths.get("src/test/resources/image.jpg");
FileChannel imageFileChannel = FileChannel.open(imageFilePath);
long imageFileSize = imageFileChannel.size();
assertEquals(expectedSize, imageFileSize);
}
4 用Apache Commons IO
使用FileUtils.sizeOf()
@Test
public void whenGetFileSizeUsingApacheCommonsIO_thenCorrect() {
long expectedSize = 12607;
File imageFile = new File("src/test/resources/image.jpg");
long size = FileUtils.sizeOf(imageFile);
assertEquals(expectedSize, size);
}
注意,有安全限制的文件,会返回0.
5 易于理解的大小
用Apache Commons IO的方法,可以返回一个转换过的,易于理解的大小。
@Test
public void whenGetReadableFileSize_thenCorrect() {
File imageFile = new File("src/test/resources/image.jpg");
long size = getFileSize(imageFile);
assertEquals("12 KB", FileUtils.byteCountToDisplaySize(size));
}
6 小结
本文讨论了多种方法来获取文件大小。
示例代码在github