JAVA将字节大小转换成(B,KB,MB,GB,TB)单位

古城微笑少年丶 2023-10-12 14:58 29阅读 0赞

项目场景:

项目中需要判断一个文件是否超过指定大小,如果超过了,需要将文件大小转换为最大满足单位。


实现代码:

这里用了两种方式

  1. package test;
  2. import java.text.DecimalFormat;
  3. public class Test3 {
  4. /**
  5. * 文件大小智能转换
  6. * 会将文件大小转换为最大满足单位
  7. * @param size(文件大小,单位为B)
  8. * @return 文件大小
  9. */
  10. public static String formatFileSize(Long size) {
  11. String sizeName = null;
  12. if(1024*1024 > size && size >= 1024 ) {
  13. sizeName = String.format("%.2f",size.doubleValue()/1024) + "KB";
  14. }else if(1024*1024*1024 > size && size >= 1024*1024 ) {
  15. sizeName = String.format("%.2f",size.doubleValue()/(1024*1024)) + "MB";
  16. }else if(size >= 1024*1024*1024 ) {
  17. sizeName = String.format("%.2f",size.doubleValue()/(1024*1024*1024)) + "GB";
  18. }else {
  19. sizeName = size.toString() + "B";
  20. }
  21. return sizeName;
  22. }
  23. /**
  24. * 文件大小智能转换
  25. * 会将文件大小转换为最大满足单位
  26. * @param size(文件大小,单位为B)
  27. * @return 文件大小
  28. */
  29. public static String readableFileSize(long size) {
  30. if (size <= 0) {
  31. return "0";
  32. }
  33. final String[] units = new String[]{"B", "KB", "MB", "GB", "TB"};
  34. int digitGroups = (int) (Math.log10(size) / Math.log10(1024));
  35. return new DecimalFormat("#,###.##").format(size / Math.pow(1024, digitGroups)) + " " + units[digitGroups];
  36. }
  37. public static void main(String[] args) {
  38. System.out.println("第一种:");
  39. System.out.println(formatFileSize(1024L));
  40. System.out.println(formatFileSize(1048576L));
  41. System.out.println("第二种:");
  42. System.out.println(readableFileSize(1024L));
  43. System.out.println(readableFileSize(1048576L));
  44. }
  45. }

打印结果

  1. 第一种:
  2. 1.00KB
  3. 1.00MB
  4. 第二种:
  5. 1 KB
  6. 1 MB

发表评论

表情:
评论列表 (有 0 条评论,29人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JavaWord转换PDF

    最近项目需要做在线预览文档功能,要求对word文档后台转为pdf,遇到了很多问题,因此记录一下。 网上有很多将Word转换成PDF的方式,这里我试了几种比较简单的方式:POI