如何批量重命名文件后再打包下载批量文件?

摘要:在项目中会遇到一些批量下载打包的简单功能,今天我们给大家分享一个:批量打包下载,且对打包的文件进行批量重名 1.表结构 字段名 备注 tutorial_id 教材ID turtorial_origin_name 源文件名 turtorial
在项目中会遇到一些批量下载打包的简单功能,今天我们给大家分享一个:批量打包下载,且对打包的文件进行批量重名 1.表结构 字段名 备注 tutorial_id 教材ID turtorial_origin_name 源文件名 turtorial_upload_name 存储文件名 turtorial_upload_path 存储路径 turtorial_sort 教材排序 2.功能描述 (1)库表存储的文件以“turtorial_upload_name”为标准,文件名称随机生成的uuid (2)当批量下载文件,其打包文件名字根据“turtorial_upload_name”命名 问题:如果我们需要在进行打包下载之前修改文件名称为“源文件名”,程序应该如何实现 3.初期代码实现 (1)依赖包:hutool (2)工具类:cn.hutool.core.util.ZipUtil (3)实现基本思路: 获取多个教材的路径,封装到File中 设置文件压缩的路径,此路径为临时下载路径 创建ZipUtil对象,封装多个教材的File对象 IO流传输 删除临时 初期代码参考 public void donwloadTutorial(String fileName, String paramJson, HttpServletResponse response) throws IOException { // 返回json字符串为集合,通过TypeReference进行类型转换 List<Map<String,String>> param = JsonFactory.json2bean(paramJson, new JsonFactory.TypeReference<List<Map<String,String>>>()); List<File> fileList = new ArrayList<>(); // 获取教材的路径 for (Map<String, String> map : param) { String tutorialUploadPath = map.get("tutorialUploadPath"); String filePath = downloadPath + tutorialUploadPath; fileList.add(FileUtil.file(filePath)); } // 文件压缩,并保存到临时路径 File zipFile = new File(downloadPath + "achive.zip"); ZipUtil.zip(zipFile, false, fileList.toArray(new File[fileList.size()])); InputStream is = new FileInputStream(zipFile); ResponseExportUtil.exportFileWithStream(response, is, fileName); is.close(); // 删除临时文件 FileUtil.del(zipFile); } 4.优化代码,完成文件重名再打包下载 基本思路: 创建临时目录,存放重命名后的文件 获取教材的路径 复制并覆盖同名文件 文件压缩,并保存到临时路径 发送压缩文件 删除临时文件 优化后代码参考 public void donwloadTutorial(String fileName, String paramJson, HttpServletResponse response) throws IOException { // 返回json字符串为集合,通过TypeReference进行类型转换 List<Map<String,String>> param = JsonFactory.json2bean(paramJson, new JsonFactory.TypeReference<List<Map<String,String>>>()); // 创建临时目录存
阅读全文