news 2026/1/17 3:50:50

保存文件到指定位置,读取/删除指定文件夹中文件

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
保存文件到指定位置,读取/删除指定文件夹中文件

使用背景

用户每次上传的文件太多,如果批量处理,服务器性能不够,所以将用户上传的文件保存到服务器上,再启动一个线程,依次处理完成后删除文件

用户上传文件

@PostMapping("/inFile")publicStringinFile(@RequestParam("file")List<MultipartFile>listFile,@RequestParamMap<String,String>params){// 创建临时文件夹FileSaveClearfsc=newFileSaveClear();fsc.createTempDirectory();listFile.forEach(file->{// 保存上传的文件到临时文件夹StringfilePath=fsc.saveFileToTemp(file);});//读取到指定文件夹中的所有文件List<MultipartFile>files=fsc.getAllTempFilesAsMultipartFiles();//启动一个线程处理对应的文件newThread(()->{System.out.println(LocalDateTime.now());files.forEach(file->{inFileRun(file,params);});//删除对应的文件fsc.deleteAllFilesInDirectory();System.out.println(LocalDateTime.now());}).start();return"inFile";}

文件保存/读取/删除代码

importorg.springframework.web.multipart.MultipartFile;importjava.io.ByteArrayInputStream;importjava.io.File;importjava.io.IOException;importjava.io.InputStream;importjava.util.ArrayList;importjava.util.List;publicclassFileSaveClear{finalStringTEMP_FILE_PATH=System.getProperty("user.dir")+"/temp-files/";// 创建临时文件夹publicvoidcreateTempDirectory(){FiletempDir=newFile(TEMP_FILE_PATH);if(!tempDir.exists()){tempDir.mkdirs();}}// 保存文件到临时文件夹publicStringsaveFileToTemp(MultipartFilefile){try{StringfileName=System.currentTimeMillis()+"_"+file.getOriginalFilename();StringfilePath=TEMP_FILE_PATH+fileName;FiledestFile=newFile(filePath);file.transferTo(destFile);returnfilePath;}catch(Exceptione){e.printStackTrace();returnnull;}}/** * 删除指定文件夹中的所有文件 * @return 删除成功的文件数量 */publicintdeleteAllFilesInDirectory(){Filedirectory=newFile(TEMP_FILE_PATH);if(!directory.exists()||!directory.isDirectory()){return0;}File[]files=directory.listFiles();if(files==null){return0;}intdeletedCount=0;for(Filefile:files){if(file.isFile()&&file.delete()){deletedCount++;}}returndeletedCount;}/** * 读取临时文件夹中的所有文件,返回MultipartFile对象列表 * @return MultipartFile对象列表 */publicList<MultipartFile>getAllTempFilesAsMultipartFiles(){FiletempDir=newFile(TEMP_FILE_PATH);if(!tempDir.exists()||!tempDir.isDirectory()){returnnewArrayList<>();}File[]files=tempDir.listFiles();if(files==null){returnnewArrayList<>();}List<MultipartFile>multipartFiles=newArrayList<>();for(Filefile:files){if(file.isFile()){try{// 读取文件内容byte[]fileContent=java.nio.file.Files.readAllBytes(file.toPath());// 创建MultipartFile对象 - 使用自定义实现MultipartFilemultipartFile=newMultipartFile(){@OverridepublicStringgetName(){returnfile.getName();}@OverridepublicStringgetOriginalFilename(){returnfile.getName();}@OverridepublicStringgetContentType(){// 根据文件扩展名确定内容类型StringfileName=file.getName().toLowerCase();if(fileName.endsWith(".csv")){return"text/csv";}elseif(fileName.endsWith(".txt")){return"text/plain";}elseif(fileName.endsWith(".xlsx")||fileName.endsWith(".xls")){return"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";}else{return"application/octet-stream";}}@OverridepublicbooleanisEmpty(){returnfileContent.length==0;}@OverridepubliclonggetSize(){returnfileContent.length;}@Overridepublicbyte[]getBytes()throwsIOException{returnfileContent;}@OverridepublicInputStreamgetInputStream()throwsIOException{returnnewByteArrayInputStream(fileContent);}@OverridepublicvoidtransferTo(Filedest)throwsIOException,IllegalStateException{java.nio.file.Files.write(dest.toPath(),fileContent);}};multipartFiles.add(multipartFile);}catch(Exceptione){System.err.println("读取文件 "+file.getName()+" 时出错: "+e.getMessage());}}}returnmultipartFiles;}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/25 12:49:53

python校内外美食推荐系统_rsss0

目录已开发项目效果实现截图开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;已开发项目效果实现截图 同行可拿货,招校园代理 python校内外美食推荐系统_rsss0 开发技术路线 开发语…

作者头像 李华
网站建设 2025/12/25 12:48:14

测试岗位的面试悖论与价值内核

一、现象背后的认知误区解构 "造火箭"的面试设计逻辑 故障推演能力&#xff1a;通过分布式系统压测场景考察全链路风险预判&#xff08;如红包系统崩溃的连锁反应&#xff09; 质量左移实践&#xff1a;需求评审阶段发现30%潜在缺陷的案例拆解能力 技术纵深测试&a…

作者头像 李华
网站建设 2026/1/7 5:44:09

【稀缺资源】Open-AutoGLM私有化部署文档首次泄露,速领!

第一章&#xff1a;Open-AutoGLM私有化部署概述Open-AutoGLM 是基于 AutoGLM 架构开源的大语言模型&#xff0c;支持在企业内部环境中进行私有化部署&#xff0c;保障数据隐私与业务安全。该模型适用于智能客服、知识库问答、自动化报告生成等场景&#xff0c;能够在不依赖外部…

作者头像 李华
网站建设 2026/1/10 5:58:52

Dify平台简历优化建议生成功能开发实践

Dify平台简历优化建议生成功能开发实践 在招聘竞争日益激烈的今天&#xff0c;一份出色的简历往往是求职者能否获得面试机会的关键。然而&#xff0c;大多数求职者并不具备专业的HR视角&#xff0c;难以从语言表达、结构逻辑和关键词匹配等维度系统性地优化自己的简历。传统的人…

作者头像 李华
网站建设 2025/12/26 13:08:28

【Open-AutoGLM核心技术解密】:ChatGPT时代下的自动化大模型演进之路

第一章&#xff1a;Shell脚本的基本语法和命令Shell 脚本是 Linux/Unix 系统中自动化任务的核心工具&#xff0c;通过编写可执行的文本文件&#xff0c;用户可以组合系统命令、控制流程并处理数据。一个 Shell 脚本通常以 #!/bin/bash 开头&#xff0c;称为 Shebang&#xff0c…

作者头像 李华
网站建设 2025/12/25 12:43:37

如何在4小时内完成Open-AutoGLM集群部署?资深架构师亲授秘诀

第一章&#xff1a;Open-AutoGLM集群部署概述Open-AutoGLM 是一个面向大规模语言模型训练与推理的开源分布式框架&#xff0c;专为高性能 GPU 集群环境设计。其核心目标是实现模型并行、数据并行与流水线并行的高效协同&#xff0c;支持千亿级参数模型的稳定训练与低延迟推理。…

作者头像 李华