Java文件大小转换的两种方式

小伙伴们好,欢迎关注,一起学习,无限进步

在程序开发的过程中,文件的大小在视图呈现和数据库存储的过程不一致怎么转换呢

文件大小的单位,在计算机中,文件大小通常使用字节(byte)作为基本单位进行表示。字节是计算机存储最小的单位,每个字节表示8个二进制位(bit)。除了字节,还有一些常用的文件大小单位,如下所示:

千字节(KB):1 KB = 1024 字节
兆字节(MB):1 MB = 1024 KB
吉字节(GB):1 GB = 1024 MB
太字节(TB):1 TB = 1024 GB

方式一

使用第三方依赖库 Apache Commons IO 提供的方法

添加以下依赖

<dependency><groupId>org.apache.commons</groupId><artifactId>commons-io</artifactId><version>1.3.2</version>
</dependency>

代码示例

import org.apache.commons.io.FileUtils;
public class TestFileSize {public static void main(String[] args) {long fileSize = 33931L;String fileSizeStr = FileUtils.byteCountToDisplaySize(fileSize);System.out.println("文件大小:" + fileSizeStr);}
}

方式二

自己添加代码写,以下几种转换方式的不同写法,基本都一样,可根据自己需求删减

import java.text.DecimalFormat;import org.apache.commons.io.FileUtils;public class TestFileSize {public static void main(String[] args) {long bytes = 33931L;String fileSizeStr = FileUtils.byteCountToDisplaySize(bytes);System.out.println("文件大小:" + fileSizeStr);// 自己定义方法实现String fileSizeStr1 = formatFileSize1(bytes);System.out.println("文件转换字符转大小方式一:" + fileSizeStr1);String fileSizeStr2 = formatFileSize2(bytes);System.out.println("文件转换字符转大小方式二:" + fileSizeStr2);String fileSizeStr3 = formatFileSize3(bytes);System.out.println("文件转换字符转大小方式三:" + fileSizeStr3);// 转换为字节long fileBytes1 = convertSizeToLong1(fileSizeStr2);System.out.println("字节数为:" + fileBytes1);long fileBytes2 = convertSizeToLong2(fileSizeStr2);System.out.println("字节数为:" + fileBytes2);}/*** 将字节数转换为其他单位的文件大小** @param bytes 字节数* @return 转换后的文件大小*/public static String formatFileSize1(long bytes) {if (bytes < 1024) {return bytes + " B";} else if (bytes < 1024 * 1024) {return Math.round(bytes / 1024.0) + " KB";} else if (bytes < 1024 * 1024 * 1024) {return Math.round(bytes / (1024.0 * 1024.0)) + " MB";} else {return Math.round(bytes / (1024.0 * 1024.0 * 1024.0)) + " GB";}}/*** 将字节数转换为其他单位的文件大小** @param bytes 字节数* @return 转换后的文件大小*/private static String formatFileSize2(long bytes) {DecimalFormat df = new DecimalFormat("#.00");String fileSizeString = "";String wrongSize = "0 B";if (bytes == 0) {return wrongSize;}if (bytes < 1024) {fileSizeString = df.format((double) bytes) + " B";} else if (bytes < 1048576) {fileSizeString = df.format((double) bytes / 1024) + " KB";} else if (bytes < 1073741824) {fileSizeString = df.format((double) bytes / 1048576) + " MB";} else {fileSizeString = df.format((double) bytes / 1073741824) + " GB";}return fileSizeString;}/*** 将字节数转换为其他单位的文件大小** @param bytes 字节数* @return 转换后的文件大小*/public static String formatFileSize3(long bytes) {String[] units = {"bytes", "KB", "MB", "GB", "TB"};int unitIndex = 0;while (bytes > 1024 && unitIndex < units.length - 1) {bytes /= 1024;unitIndex++;}return bytes + " " + units[unitIndex];}/*** 将其他单位的文件大小转换为字节数** @param size 文件大小(带单位)* @return 转换后的字节数*/public static long convertSizeToLong1(String size) {long factor = 1;String unit = size.substring(size.length() - 2).trim().toUpperCase();// 截取到小数点最后一位long value = Long.parseLong(size.substring(0, size.lastIndexOf(".")).trim());if (unit.equals("KB")) {factor = 1024;} else if (unit.equals("MB")) {factor = 1024 * 1024;} else if (unit.equals("GB")) {factor = 1024 * 1024 * 1024;}return value * factor;}/*** 将其他单位的文件大小转换为字节数** @param size 文件大小(带单位)* @return 转换后的字节数*/public static long convertSizeToLong2(String size) {long factor = 1;size = size.trim().toUpperCase();String unit = size.replaceAll("[^A-Za-z]+", "");double value = Double.parseDouble(size.replaceAll("[^0-9.]+", "").replace(unit, ""));switch (unit) {case "KB":factor = 1024;break;case "MB":factor = 1024 * 1024;break;case "GB":factor = 1024 * 1024 * 1024;break;}return (long) value * factor;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/746787.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

穿越半个世纪,探索中国数据库的前世今生

引言 在数字化潮流席卷全球的今天&#xff0c;数据库作为 IT 技术领域的“活化石”&#xff0c;已成为数字经济时代不可或缺的基础设施。那么&#xff0c;中国的数据库技术发展经历了怎样的历程&#xff1f;我们是如何在信息技术的洪流中逐步建立起自己的数据管理帝国的呢&…

Hadoop大数据应用:HDFS 集群节点扩容

目录 一、实验 1.环境 2.HDFS 集群节点扩容 二、问题 1.rsync 同步报错 一、实验 1.环境 &#xff08;1&#xff09;主机 表1 主机 主机架构软件版本IP备注hadoop NameNode &#xff08;已部署&#xff09; SecondaryNameNode &#xff08;已部署&#xff09; Resourc…

Java并发编程学习笔记:synchronized

Java并发编程学习笔记&#xff1a;synchronized 一、synchronized关键字实例方法静态方法代码块 二、底层原理三、锁的升级锁的状态锁升级 一、synchronized关键字 实例方法 作用在类的普通方法上&#xff0c;锁的是当前对象实例。构造方法本身是线程安全的&#xff0c;不能使…

海川润泽AI机器视觉仪系列产品,助推“人工智能+”打开新质生产力的大门

3月5日&#xff0c;第十四届全国人民代表大会第二次会议开幕。国务院总理李强在政府工作报告&#xff0c;提出大力推进现代化产业体系建设&#xff0c;加快发展新质生产力。深入推进数字经济创新发展&#xff0c;制定支持数字经济高质量发展政策&#xff0c;积极推进数字产业化…

零基础自学C语言|动态内存管理

✈为什么要有动态内存分配 我们已经掌握的内存开辟方式有&#xff1a; int a 0;//在栈空间上开辟四个字节char arr[10] { 0 };//在栈空间上开辟10个字节的连续空间但是上述的开辟空间的方式有两个特点&#xff1a; 空间开辟大小是固定的。数组在申明的时候&#xff0c;必须…

【开源】SpringBoot框架开发公司货物订单管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 客户管理模块2.2 商品维护模块2.3 供应商管理模块2.4 订单管理模块 三、系统展示四、核心代码4.1 查询供应商信息4.2 新增商品信息4.3 查询客户信息4.4 新增订单信息4.5 添加跟进子订单 五、免责说明 一、摘要 1.1 项目…

Cap2:Pytorch转TensorRT(上:Pytorch->ONNX)

文章目录 1、pytorch导出onnx模型2、使用onnxruntime推理onnx模型3、精度对齐4、总结 深度学习框架种类繁多&#xff0c;想实现任意框架之间的模型转换是一件困难的事情。但现在有一个中间格式ONNX&#xff0c;任何框架模型都支持转为ONNX&#xff0c;然后也支持从ONNX转为自身…

案例分析篇00-【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】(2024年软考高级系统架构设计师冲刺知识点总结-案例分析篇-先导篇)

专栏系列文章&#xff1a; 2024高级系统架构设计师备考资料&#xff08;高频考点&真题&经验&#xff09;https://blog.csdn.net/seeker1994/category_12593400.html 案例分析篇01&#xff1a;软件架构设计考点架构风格及质量属性 案例分析篇11&#xff1a;UML设计考…

Java 常用注解

一、较不熟悉 1、@MappedJdbcTypes(JdbcType.VARCHAR) MyBatis 框架中的一个注解,用于指定某个字段或方法参数与数据库中的 JDBC 类型之间的映射关系。通常作用在实体类属性或者参数上。 如下标识username字段映射到数据库中的VARCHAR属性。 public interface UserMapper {@Se…

KY199 查找

描述&#xff1a; 输入数组长度 n 输入数组 a[1…n] 输入查找个数m 输入查找数字b[1…m] 输出 YES or NO 查找有则YES 否则NO 。 输入描述&#xff1a; 输入有多组数据。 每组输入n&#xff0c;然后输入n个整数&#xff0c;再输入m&#xff0c;然后再输入m个整数&#xff08;1&…

疫情网课管理系统|基于springboot框架+ Mysql+Java+Tomcat的疫情网课管理系统设计与实现(可运行源码+数据库+设计文档+部署说明)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 前台功能效果图 ​编辑 学生功能模块 管理员功能 教师功能模块 系统功能设计 数据库E-R图设计 lun…

人工智能入门之旅:从基础知识到实战应用(五)

一、人工智能实战项目与案例分析 1. AI入门项目电影评论情感分析实战 典型的AI入门实战项目&#xff0c;比如电影评论情感分析&#xff0c;是一个非常适合初学者的项目&#xff0c;因为它简单易懂&#xff0c;同时涵盖了自然语言处理&#xff08;NLP&#xff09;领域的一些基…

Ubuntu上搭建TFTP服务

Ubuntu上搭建TFTP服务 TFTP服务简介搭建TFTP服务安装TFTP服务修改配置文件 重启服务 TFTP服务简介 TFTP是一个基于UDP协议实现的用于在客户机和服务器之间进行简单文件传输的协议&#xff0c;适用于开销不大、不复杂的应用场合。TFTP协议专门为小文件传输而设计&#xff0c;只…

虚拟游戏理财 - 华为OD统一考试(C卷)

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 100分 题解&#xff1a; Java / Python / C 题目描述 在一款虚拟游戏中生活&#xff0c;你必须进行投资以增强在虚拟游戏中的资产以免被淘汰出局。 现有一家Bank&#xff0c;它提供有若干理财产品m&#xff0c;风险及…

line_profiler逐行分析代码时间

最近model训练有点瓶颈&#xff0c;GPU的利用率总是很低。所以看看能不能使用line_profiler来发现问题。 使用方式&#xff1a; 确保 line_profiler 正确安装&#xff1a; pip install line_profiler在需要分析的函数加上修饰器&#xff1a; from line_profiler import prof…

【PHP安全】PHP伪协议

PHP伪协议&#xff1a; file:// #访问本地文件系统http:// #访问HTTPs网址ftp:// #访问ftp URLphp:// #访问输入输出流zlib:// #压缩流data:// #数据&#xff08;RFC 2397&#xff09;ssh2:// #security shell2expect:// #处理交互式的流glob:// #查找匹配的文件路径phar:// #P…

33.使用ORDER BY排序

用ORDER BY子句排序行 ASC&#xff1a;升序排序&#xff0c;默认 DESC&#xff1a;降序排序 ORDER BY 子句在SELECT 语句的最后 在一个不明确的查询结果中排序返回的行。ORDER BY子句用于排序。如果使用了ORDER BY子句&#xff0c;它必须位于SQL语句的最后。 SELECT 语句的…

Siamese Network(孪生神经网络)详解

Siamese和Chinese有点像。Siam是古时候泰国的称呼&#xff0c;中文译作暹罗。Siamese也就是“暹罗”人或“泰国”人。Siamese在英语中是“孪生”、“连体”的意思&#xff0c;这是为什么呢&#xff1f;十九世纪泰国出生了一对连体婴儿&#xff0c;当时的医学技术无法使两人分离…

前端页面渲染机制

前端页面渲染机制是指在 web 开发中&#xff0c;浏览器如何将 HTML、CSS 和 JavaScript 转换为用户可视化的网页界面的过程。这个过程通常包括以下几个主要步骤&#xff1a; 加载 HTML: 首先&#xff0c;浏览器会获取 HTML 文件&#xff0c;并解析其结构。这个过程包括识别 HTM…

MySQL锁—全局锁、表级锁、行级锁详解

MySQL 锁 MySQL的锁按照锁的粒度可以分为全局锁、表级锁和行级锁。 一、全局锁 1. 概念 全局锁&#xff0c;是对整个数据库实例加锁&#xff0c;加锁后整个实例处于只读状态&#xff0c;后续的DML、DDL语句以及已经执行更新操作的事务提交语句都将被阻塞。 2. 应用场景 数据…