获取文件大小并转换单位

这篇具有很好参考价值的文章主要介绍了获取文件大小并转换单位。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

天行健,君子以自强不息;地势坤,君子以厚德载物。


每个人都有惰性,但不断学习是好好生活的根本,共勉!


文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。


此番功能调试基于springboot项目demo,如需搭建springboot请参考:springboot搭建

注:由于multipart文件类型只能通过postman传入,故使用springboot搭建并使用路由进行测试。

1. 获取文件大小分析

由于获取文件的途径有所不同,故获取文件大小也有不同,目前知道两种方式获取文件:
一种是本地路径读取

//如F:\UPLOAD\01Z91J07A165_High.txt
String filePath = "文件本地全路径名";
File file = new File(filePath);
//文件大小为fileSize,单位为B(byte)
long fileSize = file.length();

一种是multipart文件格式传入(体现在postman中的form-data文件传入)

    public void getFileSize(MultipartFile multipartFile){
    	//可直接通过getSize函数获取文件大小
        long fileSize = multipartFile.getSize();
    }

2. 文件大小单位转换

这里需要了解下文件大小单位的转换

1KB = 1024B
1MB = 1024KB = 1048576B
1GB = 1024MB = 1048576KB = 1073741824B
1TB = 1024GB = 1048576MB = 1073741824KB = 1099511627776B
1PB = 1024TB = 1048576GB = 1073741824MB = 1099511627776KB = 1125899906842624B

3. 文件大小获取并转换单位的代码

首先获取文件大小,然后根据是否满1个单位来确定单位
fileSize<1024B 则单位为B
1KB<fileSize<1024KB 则单位为KB
1MB<fileSize<1024MB 则单位为MB
以此类推
代码如下

package com.data.utils;

import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.text.DecimalFormat;

/**
 * @Description: 文件大小单位转换工具类
 * @Version 1.0
 * @Author 李白
 * @Date 2023/7/5 星期三 15:45
 */
public class FileSizeUtils {
    /**
     * 获取文件大小并转换单位
     * @param multipartFile multipart格式文件传入
     * @return
     */
    public static String getFileSize(MultipartFile multipartFile){
        long fileSize = multipartFile.getSize();
        System.out.println("fileSize: "+fileSize);
        DecimalFormat df = new DecimalFormat("#.00");
        String fileSizeString = "";
        if (fileSize == 0) {
            fileSizeString = "0B";
        }else if (fileSize < 1024) {
            fileSizeString = df.format((double) fileSize) + "B";
        } else if (fileSize < 1048576) {
            fileSizeString = df.format((double) fileSize / 1024) + "KB";
        } else if (fileSize < 1073741824) {
            fileSizeString = df.format((double) fileSize / 1048576) + "MB";
        } else {
            fileSizeString = df.format((double) fileSize / 1073741824) + "GB";
        }
        System.out.println("fileSizeString: "+fileSizeString);
        return fileSizeString;
    }

    /**
     * 获取文件大小并转换单位
     * @param filePath 本地文件路径
     * @return
     */
    public static String getFileSize(String filePath){
        File file = new File(filePath);
        String fileSizeString = "";
            long fileSize = file.length();
            System.out.println("fileSize: "+fileSize);
            DecimalFormat df = new DecimalFormat("#.00");
            if (fileSize == 0) {
                fileSizeString = "0B";
            }else if (fileSize < 1024) {
                fileSizeString = df.format((double) fileSize) + "B";
            } else if (fileSize < 1048576) {
                fileSizeString = df.format((double) fileSize / 1024) + "KB";
            } else if (fileSize < 1073741824) {
                fileSizeString = df.format((double) fileSize / 1048576) + "MB";
            } else if (fileSize < 1099511627776L) {
                fileSizeString = df.format((double) fileSize / 1073741824) + "GB";
            } /*else if (fileSize < 1125899906842624L) {
                fileSizeString = df.format((double) fileSize / 1099511627776L) + "TB";
            } else {
                fileSizeString = df.format((double) fileSize / 1125899906842624L) + "PB";
            }*/
        System.out.println("fileSizeString: "+fileSizeString);
        return fileSizeString;
    }
}

4. 请求路由接口

package com.data.controller;

import com.data.utils.FileSizeUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

/**
 * @Description: 文件大小单位转换
 * @Version 1.0
 * @Author 李白
 * @Date 2023/7/5 星期三 15:41
 */
@CrossOrigin
@RestController
@RequestMapping("/file")
public class FileSizeTest {
    @PostMapping("/getFileSize")
    public String fileSizeGet(@RequestParam("multiFile") MultipartFile multipartFile){
        String fileSize = FileSizeUtils.getFileSize("F:\\UPLOAD\\01Z91J07A165_High.txt");
        String multiFileSize = FileSizeUtils.getFileSize(multipartFile);
        return "fileSize: "+fileSize+"   multiFileSize:"+multiFileSize;
    }
}

5. postman测试

运行项目
打开postman
输入请求路由地址

127.0.0.1:8099/file/getFileSize

注意参数填写
key的值填的是请求接口中@RequestParam括号中的参数,文件类型选择File填
然后选取要上传的文件即可
如下图
获取文件大小并转换单位,工具,开发语言,java
发起请求
postman返回如下
获取文件大小并转换单位,工具,开发语言,java
控制台打印
获取文件大小并转换单位,工具,开发语言,java

6. 验证文件大小

刚刚上传的文件选中后鼠标右键点属性查看文件的大小来验证是否正确
获取文件大小并转换单位,工具,开发语言,java
获取文件大小并转换单位,工具,开发语言,java

可以看到,字节大小一致,MB为单位差了0.01,问题不大文章来源地址https://www.toymoban.com/news/detail-545869.html


到了这里,关于获取文件大小并转换单位的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包