天行健,君子以自强不息;地势坤,君子以厚德载物。
每个人都有惰性,但不断学习是好好生活的根本,共勉!
文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。
文件大小获取并转换单位
- 1. 获取文件大小分析
- 2. 文件大小单位转换
- 3. 文件大小获取并转换单位的代码
- 4. 请求路由接口
- 5. postman测试
- 6. 验证文件大小
此番功能调试基于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填
然后选取要上传的文件即可
如下图
发起请求
postman返回如下
控制台打印
6. 验证文件大小
刚刚上传的文件选中后鼠标右键点属性查看文件的大小来验证是否正确
可以看到,字节大小一致,MB为单位差了0.01,问题不大