1. 程式人生 > 實用技巧 >IO流關閉工具類 緩衝流關閉工具類

IO流關閉工具類 緩衝流關閉工具類

流關閉工具類

之前寫了一個關於html寫入檔案並和伺服器下的樣式檔案一起打包壓縮下載的需求
其中有很多需要關閉流的地方,但是每次都需要巢狀很多try catch
所以想到乾脆寫一個工具類,簡化流程 我只需要在finally中每次呼叫這個方法並且傳入要關閉的流就可以了

話不多說,直接上程式碼,有不足的地方大哥們提出來一起探討

 1 package com.portal.util;
 2 
 3 import lombok.extern.slf4j.Slf4j;
 4 
 5 import java.io.Closeable;
 6 import java.io.IOException;
7 8 /** 9 * @Author Created by Chirs_ZhongHJ 10 * @Time ON 2020/7/17 10:15 11 * @Desc ZIP壓縮下載工具類 12 **/ 13 @Slf4j 14 public class IOCloseUtils { 15 16 public static void ioClose(Closeable... closeables) { 17 //遍歷傳入需要關閉的流 18 for (Closeable closeable:closeables){ 19 try
{ 20 //判斷傳入的流是否為空 21 if (closeable != null) { 22 closeable.close();//不為空則關閉 23 } 24 } catch (IOException e) { 25 log.error("IO流關閉異常========="+e.getMessage(),e); 26 } 27 } 28 } 29 }

呼叫方法如下:只需要將需要關閉的流全部放入引數就可以

 1 public void downloadZip(String id,HttpServletResponse response) {
 2         File file = new File(zipPath,"index.html");
 3         BufferedWriter bw = null;
 4         try {
 5             chenkFile(file,zipPath);
 6             ModuleInfo moduleInfo = moduleDao.getByModId(id);
 7             bw = new BufferedWriter(new FileWriter(file));
 8             //把內容寫入臨時檔案中
 9             bw.write(moduleInfo.getContent());
10             //此處不能刪除,要關閉一次 不關閉無法寫入內容 導致壓縮包內檔案無內容
11             bw.flush();
12             bw.close();
13             //將目標檔案壓縮為ZIP並下載
14             ZipUtil.zip(zipPath,response);
15             //刪除臨時檔案
16             file.delete();
17         } catch (Exception e) {
18             log.error("html壓縮====="+e.getMessage(),e);
19         }finally {
20             IOCloseUtils.ioClose(bw,"需要關閉的流1","需要關閉的流2");
21         }
22     }

有看不懂的地方請評論留言~

發文不易,各位看官關注下公眾號,謝謝!!!
關注公眾號回覆 ”jar包“ 獲取IDEA2020最新版破解jar包,教程在這
https://www.cnblogs.com/yzzy97/p/13293249.html