黑客日教程-Java获取文件大小的方法,你知道几种

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

编译

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值