行业资讯 2025年08月6日
0 收藏 0 点赞 659 浏览 1494 个字
摘要 :

文章目录 1.使用标准IO的File.length() 2. 使用New IO的Files.size() 3. 使用Common IO的FileUtils.sizeOf() 4. 以格式化的方式显示大小 4.1 自定义格式化 4.2. 使用Fi……




  • 1.使用标准IO的File.length()
  • 2. 使用New IO的Files.size()
  • 3. 使用Common IO的FileUtils.sizeOf()
  • 4. 以格式化的方式显示大小
    • 4.1 自定义格式化
    • 4.2. 使用FileUtils.byteCountToDisplaySize()
  • 5.结论

学习使用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.zuozi.net/9471.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

988
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

465
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

348
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

456
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

517
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

832
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号