IO流關閉工具類 緩衝流關閉工具類
阿新 • • 發佈:2020-07-20
流關閉工具類
之前寫了一個關於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