文件上传
1.MultipartFile工具类
package org.springframework.web.multipart;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import org.springframework.core.io.InputStreamSource;
import org.springframework.core.io.Resource;
import org.springframework.lang.Nullable;
import org.springframework.util.FileCopyUtils;
public interface MultipartFile extends InputStreamSource {
//getName() 返回参数的名称
String getName();
//获取源文件的昵称
@Nullable
String getOriginalFilename();
//getContentType() 返回文件的内容类型
@Nullable
String getContentType();
//isEmpty() 判断是否为空,或者上传的文件是否有内容
boolean isEmpty();
//getSize() 返回文件大小 以字节为单位
long getSize();
//getBytes() 将文件内容转化成一个byte[] 返回
byte[] getBytes() throws IOException;
//getInputStream() 返回InputStream读取文件的内容
InputStream getInputStream() throws IOException;
default Resource getResource() {
return new MultipartFileResource(this);
}
//transferTo(File dest) 用来把 MultipartFile 转换换成 File
void transferTo(File var1) throws IOException, IllegalStateException;
default void transferTo(Path dest) throws IOException, IllegalStateException {
FileCopyUtils.copy(this.getInputStream(), Files.newOutputStream(dest));
}
}
2.EasyExcel.read
2.1
第一步创建监听器:
继承 AnalysisEventListener , 重写invoke、invokeHeadMap、doAfterAnalysed方法
invoke:可以一行一行读取 excel 内容
invokeHeadMap:读取表头内容
doAfterAnalysed: 读取完成之后做什么事情
代码示例:
public class ExcelListen extends AnalysisEventListener<ExcelData> { //ExcelData为读取的类名
// 一行一行读取 excel 内容
@Override
public void invoke(ExcelData excelData, AnalysisContext analysisContext) { //ExcelData为读取的类名,后面不动
System.out.println("***"+excelData+"***");
}
// 读取表头内容
@Override
public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
System.out.println("表头:" + headMap);
}
// 读取完成之后
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
}
2.2
第二步创建实体类
代码示例:
@Data
@ApiModel(value = "追加工作量DTO") //这个注解的是作用在类上面的,是用来描述类的一些基本信息的 value为模型提供备用名称
public class SupplementImportDTO {
@ApiModelProperty("姓名") //添加和操作模型属性的数据
@ExcelProperty(value = "姓名")
private String nickName;
@ApiModelProperty("工号")
@ExcelProperty(value = "工号")
private String userName;
@ApiModelProperty("追加分")
@ExcelProperty(value = "追加分")
Double workload;
@ApiModelProperty("追加分类型")
@ExcelProperty(value = "追加分类型")
String workloadType;
@ApiModelProperty("追加分级别")
@ExcelProperty(value = "追加分级别")
String workloadLevel;
}
2.3 第三步使用
代码示例:
public static void main(String[] args) {
// 实现excel读操作
String filename = "E:\\write.xlsx";
EasyExcel.read(filename,ExcelData.class,new ExcelListen()) .sheet() .doRead(); //sheet(0)指定读取哪个sheet
}
关于文件:File.separator 的作用相当于 ' \ '
FileUtils.touch => 创建文件,如果文件存在则更新时间;如果不存在,创建一个空文件
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话