java使用ZipInputStream實現(xiàn)讀取和寫入zip文件
更新時間:2023年11月06日 10:23:18 作者:bug生產者
zip文檔可以以壓縮格式存儲一個或多個文件,本文主要為大家詳細介紹了java如何使用ZipInputStream讀取Zip文檔與寫入,需要的小伙伴可以參考下
zip壓縮
zip文檔可以以壓縮格式存儲一個或多個文件,可以使用ZipInputStream讀取Zip文檔,使用ZipOutputStream來寫入到Zip文件中
<!-- more -->
ZipInputStream讀取
ZipInputStream zin = new ZipInputStream(in); ZipEntry ze; // getNextEntry返回描述這個項的ZipEntry的對象 while ((ze = zin.getNextEntry()) != null) { // getInputStream獲取用于讀取該項的輸入流 BufferedReader br = new BufferedReader( new InputStreamReader(zf.getInputStream(ze), charset)); // 業(yè)務邏輯 todo br.close(); // closeEntry關閉當前打開的項 zin.closeEntry(); } zin.close();
ZipOutputStream寫入
ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(zipFile)); File fileWillZip = new File(dir); if (fileWillZip.exists()) { // 需要壓縮的文件是文件夾。需要遞歸進行壓縮 if(fileWillZip.isDirectory()){ compressZip(zipOut,fileWillZip,fileWillZip.getName()); } else { // 是文件,直接壓縮 zip(zipOut,fileWillZip,dir); } } zipOut.closeEntry(); zipOut.close(); private void compressZip(ZipOutputStream zipOutput, File file, String suffixpath) { File[] listFiles = file.listFiles();// 列出所有的文件 for(File fi : listFiles){ if(fi.isDirectory()){ // 如果是文件夾,繼續(xù)遞歸 if(suffixpath.equals("")){ compressZip(zipOutput, fi, fi.getName()); }else{ compressZip(zipOutput, fi, suffixpath + File.separator + fi.getName()); } }else{ zip(zipOutput, fi, suffixpath); } } } public void zip(ZipOutputStream zipOutput, File file, String suffixpath) { try { // 創(chuàng)建ZipEntry對象 ZipEntry zEntry = null; if(suffixpath.equals("")){ zEntry = new ZipEntry(file.getName()); }else{ zEntry = new ZipEntry(suffixpath + File.separator + file.getName()); } // putNextEntry將給定的ZipEntry中的信息寫出到輸出流,并定位用于寫出數(shù)據(jù)的流,然后這些數(shù)據(jù)可以通過write方法寫出到這個輸出流中 zipOutput.putNextEntry(zEntry); BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file)); byte[] buffer = new byte[1024]; int read = 0; while((read = bis.read(buffer)) != -1){ zipOutput.write(buffer, 0, read); } bis.close(); } catch (Exception e) { e.printStackTrace(); } }
到此這篇關于java使用ZipInputStream實現(xiàn)讀取和寫入zip文件的文章就介紹到這了,更多相關java ZipInputStream內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java中@ConfigurationProperties實現(xiàn)自定義配置綁定問題分析
這篇文章主要介紹了@ConfigurationProperties實現(xiàn)自定義配置綁定問題,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08Java中jakarta.validation數(shù)據(jù)校驗幾個主要依賴包講解
在Java開發(fā)中,BeanValidationAPI提供了一套標準的數(shù)據(jù)驗證機制,尤其是通過JakartaBeanValidation(原HibernateValidator)實現(xiàn),文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-09-09SpringCloud服務注冊和發(fā)現(xiàn)組件Eureka
對于微服務的治理而言,其核心就是服務的注冊和發(fā)現(xiàn)。在SpringCloud 中提供了多種服務注冊與發(fā)現(xiàn)組件,官方推薦使用Eureka。本篇文章,我們來講解springcloud的服務注冊和發(fā)現(xiàn)組件,感興趣的可以了解一下2021-05-05Java如何實現(xiàn)支付寶電腦支付基于servlet版本
這篇文章主要介紹了Java如何實現(xiàn)支付寶電腦支付基于servlet版本,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-11-11