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