Java如何获取文件或目录的大小

后端 潘老师 6个月前 (10-20) 137 ℃ (0) 扫码查看

学习使用Java的IO类File,Files和Common IO的FileUtils类来获取文件或目录的大小。

1.使用标准IO的File.length()

为了获取文件的大小,File类提供了length()方法,它返回文件以字节为单位的长度。

如果读取文件的访问被拒绝,我们可能会得到SecurityException。

如果该文件代表一个目录,则返回值是不确定的。

File file = new File("c:/temp/demo.txt");
long bytes = file.length();

2. 使用New IO的Files.size()

Files类提供了一个直接的方法size(),它的行为类似于前面的示例。它也返回文件的大小(以字节为单位)。

由于压缩、支持稀疏文件或其他原因,该大小可能与文件系统上的实际大小不同。

此方法如果读取文件的访问被拒绝,也可能会抛出SecurityException。

File file = new File("c:/temp/demo.txt");
long bytes = Files.size(file.toPath());

3. 使用Common IO的FileUtils.sizeOf()

FileUtils.sizeOf()可以用来获取文件或目录的大小。

如果该文件是一个常规文件,那么文件的大小(以字节为单位)将被返回。
如果该文件是一个目录,那么目录的大小将被递归计算。需要注意的是,如果读取任何文件或子目录时出现问题,其大小将不会包含在结果中。

我们应该小心检查目录是否太大,因为sizeOf()不会检测最终大小值溢出并且可能会返回一个负值。

File file = new File("c:/temp/demo.txt");
long bytes = FileUtils.sizeOf(file);

4. 以格式化的方式显示大小

为了以格式化的方式向最终用户显示大小,我们可以自己进行格式化或者使用FileUtils.byteCountToDisplaySize()方法。

4.1 自定义格式化

使用String.format()方法根据需要生成格式化的输出字符串。

System.out.println(String.format("%,d Bytes", bytes));
System.out.println(String.format("%,d KB", bytes / 1024));

4.2. 使用FileUtils.byteCountToDisplaySize()

byteCountToDisplaySize()返回文件的可读版本的大小。请注意,文件大小四舍五入到最近的KB、MB或GB。

System.out.println(FileUtils.byteCountToDisplaySize(2333444l));  //2 MB
System.out.println(FileUtils.byteCountToDisplaySize(2333444555l));  //2 GB

5.结论

在这篇简短教程中,我们学会了如何计算Java中文件或目录的大小。我们还看到了如何格式化文件大小以向用户显示。

对于常规文件,我们可以使用Java IO类。对于计算目录的大小,使用Commons IO的FileUtils是一个很好的选择。

 


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/back/10162.html
喜欢 (0)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】