您好,登錄后才能下訂單哦!
本篇文章為大家展示了使用Java導出ZIP壓縮包的實現方法,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.text.SimpleDateFormat; import java.util.Date; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; /** * @author wx * @date 2020/10/29 5:19 下午 */ public class FileZipUtil { private static void handlerFile(ZipOutputStream zip, File file, String dir) throws Exception { //如果當前的是文件夾,則進行進一步處理 if (file.isDirectory()) { //得到文件列表信息 File[] fileArray = file.listFiles(); if (fileArray == null) { return; } //將文件夾添加到下一級打包目錄 zip.putNextEntry(new ZipEntry(dir + "/")); dir = dir.length() == 0 ? "" : dir + "/"; //遞歸將文件夾中的文件打包 for (File f : fileArray) { handlerFile(zip, f, dir + f.getName()); } } else { //當前的是文件,打包處理 //文件輸入流 BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file)); ZipEntry entry = new ZipEntry(dir); zip.putNextEntry(entry); zip.write(FileUtils.readFileToByteArray(file)); IOUtils.closeQuietly(bis); zip.flush(); zip.closeEntry(); } } private static byte[] createZip(String sourceFilePath) throws Exception{ ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); ZipOutputStream zip = new ZipOutputStream(outputStream); //將目標文件打包成zip導出 File file = new File(sourceFilePath); handlerFile(zip, file,""); IOUtils.closeQuietly(zip); return outputStream.toByteArray(); } public static void exportZip(HttpServletResponse response, String sourceFilePath) { //文件名以時間戳作為前綴 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); String filePrefix = sdf.format(new Date()); String downloadName = filePrefix + ".zip"; //將文件進行打包下載 try { OutputStream out = response.getOutputStream(); //接收壓縮包字節 byte[] data = createZip(sourceFilePath); response.reset(); response.addHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Expose-Headers", "*"); response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + downloadName); response.addHeader("Content-Length", "" + data.length); response.setContentType("application/octet-stream;charset=UTF-8"); IOUtils.write(data, out); out.flush(); out.close(); } catch (Exception e) { e.printStackTrace(); } } }
客戶端調用方法:
@GetMapping("/exportFile") public Result exportFile(HttpServletResponse response) { //第二個參數為:要壓縮文件的地址 FileZipUtil.exportZip(response, "/Users/Downloads"); }
上述內容就是使用Java導出ZIP壓縮包的實現方法,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。