news 2026/6/15 16:28:08

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

作者头像

张小明

前端开发工程师

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进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 15:03:22

别再盲目调试!Open-AutoGLM改Prompt必须知道的6个科学原则

第一章&#xff1a;别再盲目调试&#xff01;Open-AutoGLM改Prompt的认知革命 传统大模型调优依赖反复试错式Prompt修改&#xff0c;效率低下且难以复现。Open-AutoGLM的出现&#xff0c;标志着从“人工猜调”到“系统化Prompt工程”的认知跃迁。它通过可解释的梯度引导机制&am…

作者头像 李华
网站建设 2026/6/15 16:06:03

还在手动操作网页?一文掌握仿Open-AutoGLM自动化插件开发全流程

第一章&#xff1a;仿Open-AutoGLM浏览器插件开发概述浏览器插件作为现代Web生态的重要组成部分&#xff0c;为用户提供了增强浏览体验、自动化操作和智能交互的能力。仿Open-AutoGLM插件旨在复现类似AutoGLM的智能对话与页面内容理解功能&#xff0c;通过集成大语言模型能力&a…

作者头像 李华
网站建设 2026/6/15 16:06:01

Dify平台茶叶冲泡指南生成效果评测

Dify平台茶叶冲泡指南生成效果评测 在智能设备与个性化服务日益普及的今天&#xff0c;用户对“精准指导”的需求正在从通用问答转向场景化、专业化的知识交付。比如&#xff0c;在茶文化盛行的中国&#xff0c;越来越多消费者希望获得针对特定茶叶的科学冲泡建议——不是泛泛而…

作者头像 李华
网站建设 2026/6/15 16:06:09

2025最新!专科生必看9个AI论文工具测评与推荐

2025最新&#xff01;专科生必看9个AI论文工具测评与推荐 2025年专科生论文写作工具测评&#xff1a;高效辅助&#xff0c;精准推荐 随着AI技术的不断进步&#xff0c;越来越多的学术辅助工具进入高校师生的视野&#xff0c;尤其对于专科生群体而言&#xff0c;论文写作往往面临…

作者头像 李华
网站建设 2026/5/29 21:17:32

【稀缺资源】谷歌Open-AutoGLM核心架构图流出:仅限本周查看的技术解析

第一章&#xff1a;Open-AutoGLM核心架构概览Open-AutoGLM 是一个面向通用语言理解与生成任务的开源自适应模型框架&#xff0c;其设计目标是实现跨领域、多任务的高效推理与动态优化。该架构融合了元学习、图神经网络与提示工程机制&#xff0c;支持在无监督或弱监督条件下自动…

作者头像 李华