Java工具类:接收接口文件并转存到本地临时文件夹
背景:在编写接收上传文件的后端接口时,我们可能需要对文件进行一系列的校验工作,如果在写入上传文件到本地(资源服务器)之后才进行校验,是不太合适的,一是浪费带宽二是浪费内存,先将文件通过流的方式转存为临时文件,等校验通过之后再真正写入本地(上传资源服务器),是一个不错的选择
原理:输入输出流写入文件
/*** 临时文件路径前缀*/private static final String TEMP_FILEPATH = "/opt/temp";/*** 转存临时文件(使用后请删除:下面有deleteFile)** @param multipartFile 待转存文件* @return 临时文件绝对路径*/private static String storageTempFile(MultipartFile multipartFile) {// 文件无效,无需转存File toFile = null;if (multipartFile.getSize() <= 0) {return StringUtils.EMPTY;} else {// 文件原名称String originalFilename = multipartFile.getOriginalFilename();// 文件格式String fileFormat = Objects.requireNonNull(originalFilename).substring(originalFilename.lastIndexOf("."));// 生成文件idString uuid = UUID.randomUUID().toString().trim().replaceAll("-", "");// 文件全路径(绝对路径+文件名称)toFile = new File(TEMP_FILEPATH + File.separator + uuid + fileFormat);String absolutePath = null;try {// 获取临时文件所需要转存的文件夹路劲,不存在则创建absolutePath = toFile.getCanonicalPath();String dirPath = absolutePath.substring(0, absolutePath.lastIndexOf(File.separator));File dir = new File(dirPath);if (!dir.exists()) {dir.mkdirs();}// 流写入InputStream ins = multipartFile.getInputStream();inputStreamToFile(ins, toFile);ins.close();} catch (IOException e) {e.printStackTrace();}// 返回绝对路径return absolutePath;}}/*** 流写入文件** @param inputStream 文件输入流* @param file 输出文件*/private static void inputStreamToFile(InputStream inputStream, File file) {try {OutputStream os = new FileOutputStream(file);int bytesRead = 0;byte[] buffer = new byte[8192];while ((bytesRead = inputStream.read(buffer, 0, 8192)) != -1) {os.write(buffer, 0, bytesRead);}os.close();inputStream.close();} catch (Exception e) {e.printStackTrace();}}/*** 删除本地文件** @param file 要删除的文件*/private static void deleteFile(File file) {if (file != null) {File del = new File(file.toURI());del.delete();}}
Java工具类:接收接口文件并转存到本地临时文件夹相关推荐
- java工具类之大文件分片(切割)与合并
之前在潭州教育教学网站上看了一个视频关于java大文件的分片与合并 自己在练习的时候遇到一些坑,调试了好长时间 代码如下: 首先配置一个专门放参数的类 SplitFileParam public cl ...
- java工具类获取文件扩展名与content-type、http与content-type映射关系
java工具类获取文件扩展名与content-type.http与content-type映射关系 大家好,我是酷酷的韩~ 一.对应关系参考地址: http://doc.chacuo.net/cont ...
- 【Java工具类】(22)—服务器传文件工具类SCp和Sftp
Java工具类(22)-服务器传文件工具类SCp和Sftp 1.Scp package com.awifi.capacity.docker.manager.utils;import ch.ethz.s ...
- Java工具类——通过配置XML验证Map
Java工具类--通过配置XML验证Map 背景 在JavaWeb项目中,接收前端过来的参数时通常是使用我们的实体类进行接收的.但是呢,我们不能去决定已经搭建好的框架是怎么样的,在我接触的框架中有一种 ...
- java xml最火的的工具_几种高效的Java工具类推荐
本文将介绍了十二种常用的.高效的Java工具类 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类. 在开发中,使用这些工具类,不仅可以提高编码效率,还 ...
- 验证码识别服务器,一个非常好用的验证码识别工具类api接口
一个非常好用的验证码识别工具类api接口 群发?批量操作?验证码?可能乖孩子对于这些单个有了解,但是对于合在一起就不知道其存在的意义.这个对 于我们日常的生活可能是没有什么用处的,但是对于需要批量检测 ...
- 干货:排名前 16 的 Java 工具类!
2019独角兽企业重金招聘Python工程师标准>>> 干货:排名前 16 的 Java 工具类! 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最 ...
- 排名前 16 的 Java 工具类
转载来自微信公众号:Java 技术栈.如有侵权,请联系作者删除!! 在 Java 中,工具类定义了一组公共方法,这篇文章将介绍 Java 中使用最频繁及最通用的 Java 工具类.以下工具类.方法按使 ...
- beanutils工具类_16 个超级实用的 Java 工具类!
在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. ...
最新文章
- python的pandas_python之pandas(一)
- Android 分享机顶盒项目的封装类《GridView》
- 18岁的他从月薪2000到月薪11000经历了什么?
- linux 伪终端 pty 简介
- 真不知写什么了,也就是很久没有做什么了
- sql并行度_SQL Server最大并行度的重要性
- r语言 四格画图_R绘图基础(一)
- Thinking in Java 11.3 添加一组元素
- JParticles 2.0 发布,打造炫酷的粒子特效
- 【python】10行代码下载B站弹幕
- 整形美容的消费者心理分析
- Cannot construct instance of `com.baomidou.mybatisplus.core.metadata.IPage`
- java手机游戏星际争霸_java Swing实现的星际争霸游戏源码
- 扫描车牌是什么神经网络,卷积神经网络车牌识别
- matlab 画折线图(美化)
- 磁带库连接服务器协议,如何确定磁带库设备和OS设备文件的对应关系
- 关于双字节字符(16 byte)
- 农行K宝无法使用,设备管理器显示叹号
- 哥们,B/S了解吗?——啥玩意,我是敲代码的
- 学习记录《Simulink 快速入门 —— 官方Help文档》
热门文章
- linux 查看电池日志,Ubuntu battery 笔记本电池信息查询
- C语言(递归)使用递归方法,求解X^n
- 不论你是大众,科班和非科班,我这边整理很久,总结出的学习路线,还不快卷起来
- 最大奇数与最小偶数之差的绝对值
- 信奥中的数学 数论 第2讲 奇数和偶数
- 北京2018年计算机技校,2018年北京十大技校排名 排名前十的学校有哪些?
- 使用vba获取excel每个sheet页的名称,并在目录页生成超级链接
- ExecuteNonQuery(),ExecuteScalar(),ExecuteReader的用法-转
- 健康知识-健康四大基石(维多利亚宣言)
- 解决opencv中cv2.VideoCapture()函数打开USB视频慢的问题