springboot 下载字符串 以txt格式 批量导出


需求内容:将数据库中的字符串转换成文件,并以压缩包的形式批量下载。

步骤:

  一、字符串写成临时文件。

  二、将得到的临时文件列表打包压缩。

  三、将临时文件、临时压缩文件删除。

操作:

  一、字符串写成临时文件

  

1 String dir = System.getProperty("java.io.tmpdir") + File.separator;
2 File fDir = new File(dir);
3 if (!fDir.exists()) {
4      fDir.mkdirs();
5 }
//创建临时文件夹

 

 
1 File file = new File(dir, fn); //fn是文件的名称,带后缀的
2 FileUtils.writeStringToFile(file, 字符串内容, "UTF-8"); //将字符串写为临时文件

 

二、将得到的临时文件列表打包压缩

1 File zipFile = new File(dir, "download.zip");
2 ZipFilesUtil.doZipFiles(文件列表, zipFile);//用到了压缩工具类

压缩文件的工具类:

 1 import java.io.FileInputStream;
 2 import java.io.FileOutputStream;
 3 import java.io.IOException;
 4 import java.util.zip.ZipEntry;
 5 import java.util.zip.ZipOutputStream;
 6 
 7 public class ZipFilesUtil {
 8     /**
 9      *  *将多个文件压缩
10      */
11     public static void doZipFiles(java.io.File[] srcfile, java.io.File zipfile) {
12         byte[] buf = new byte[1024];
13         ZipOutputStream out = null;
14         try {
15             out = new ZipOutputStream(new FileOutputStream(
16                 zipfile));
17             for (int i = 0; i < srcfile.length; i++) {
18                 FileInputStream in = new FileInputStream(srcfile[i]);
19                 out.putNextEntry(new ZipEntry(srcfile[i].getName()));
20                 int len;
21                 while ((len = in.read(buf)) > 0) {
22                     out.write(buf, 0, len);
23                 }
24                 out.closeEntry();
25                 in.close();
26             }
27             out.close();
28         } catch (IOException e) {
29             e.printStackTrace();
30         } finally {
31             try {
32                 out.close();
33             } catch (Exception e) {
34                 e.printStackTrace();
35             }
36         }
37 
38     }
39 }

 

三、将临时文件、临时压缩文件删除

1 for (File file : fileArray) {
2       FileUtils.deleteQuietly(file);//删除临时文件
3  }
4 FileUtils.deleteQuietly(zipFile);

 

出现的问题:前端控制台显示跨域,还以为是我没有做跨域处理,实际上项目中已经做了通用的跨域处理,与我有没有加跨域没有关系,那么为什么会出现这个问题呢?

原因是干了下面这件蠢事。。。

1 // 清空response
2 response.reset();

 

总结:大佬说写代码就像堆积木,需要什么代码就去网上搜什么。嗯好的。

用到了下载文件和压缩文件的工具类。

参考:

https://blog.csdn.net/chaos_le/article/details/81871472 //转写字符串为文件

https://www.cnblogs.com/zxg-blog/p/10687866.html //将文件列表压缩的工具类

 

感觉自己写的文章好冷场,哈哈哈哈。。。打扰了

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM