Java获取上传的文件大小并且转换对文件大小进行单位转化

10 篇文章 3 订阅

前言

今天产品提出来一个需求,上传文件的时候要记录文件的大小,并且保存到数据库里面。

正好借着这个机会,分享下对文件大小进行单位转化的一个方法。

获取文件大小(原字节)。

一般和前后端进行文件交互,都是通过MultipartFile实现的,它有一个方法:getSize()

无需参数,返回的是该文件Long类型的字节。

我们可以通过它获取到上传的文件的原字节

在这里插入图片描述

我本地有一个文件,可以看到它的文件大小,一会我就用它进行测试:

在这里插入图片描述

然和测试接口,就用这个文件:

在这里插入图片描述

在这里插入图片描述

可以发现,获取到的文件大小和原字节是一模一样的

在这里插入图片描述

获取文件大小(单位转化)。

虽然可以获取到文件的原字节大小,但是有的需求是需要我们把这个字节进行单位转换的。

这时候需要我们一个方法,把获取到的文件字节传进去,然后返回的就是字节转换后的文件大小

在这里插入图片描述

private String formatSize(long fileS) {
        DecimalFormat df = new DecimalFormat("#.00");
        String fileSizeString = "";
        String wrongSize = "0B";
        if (fileS == 0) {
            return wrongSize;
        }
        if (fileS < 1024) {
            fileSizeString = df.format((double) fileS) + "B";
        } else if (fileS < 1048576) {
            fileSizeString = df.format((double) fileS / 1024) + "KB";
        } else if (fileS < 1073741824) {
            fileSizeString = df.format((double) fileS / 1048576) + "MB";
        } else {
            fileSizeString = df.format((double) fileS / 1073741824) + "GB";
        }
        return fileSizeString;
    }

这时候再来测试下代码,发现文件大小格式已经转变了。

在这里插入图片描述

这时候,就可以根据自己的需求,看看需要储存哪种文件大小格式就好了。

  • 13
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
获取文件大小Java代码: ```java import java.io.File; public class FileSize { public static long getFileSize(String filePath) { File file = new File(filePath); if (file.exists() && file.isFile()) { return file.length(); } else { return 0; } } } ``` 计算上传速率的Java代码: ```java public class UploadSpeed { public static double calculateUploadSpeed(long fileSize, long startTime, long endTime) { double timeElapsed = (endTime - startTime) / 1000.0; // 单位转换为秒 return fileSize / timeElapsed; } } ``` 上传文件的Java代码: ```java import java.io.*; import java.net.HttpURLConnection; import java.net.URL; public class FileUploader { public static void upload(String filePath, String url) throws IOException { File file = new File(filePath); if (!file.exists() || !file.isFile()) { throw new IllegalArgumentException("File does not exist or is not a file."); } long fileSize = FileSize.getFileSize(filePath); long startTime = System.currentTimeMillis(); URL uploadUrl = new URL(url); HttpURLConnection connection = (HttpURLConnection) uploadUrl.openConnection(); connection.setDoOutput(true); connection.setRequestMethod("POST"); // 写入文件数据 try (OutputStream out = connection.getOutputStream(); InputStream in = new FileInputStream(file)) { byte[] buffer = new byte[4096]; int bytesRead; while ((bytesRead = in.read(buffer)) != -1) { out.write(buffer, 0, bytesRead); } } long endTime = System.currentTimeMillis(); if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) { double uploadSpeed = UploadSpeed.calculateUploadSpeed(fileSize, startTime, endTime); System.out.printf("上传成功!文件大小为%d字节,上传速率为%.2f字节/秒", fileSize, uploadSpeed); } else { System.out.println("上传失败!"); } } } ```
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小花皮猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值