java使用ZipOutputStream文件進行壓縮

      網友投稿 1633 2022-05-30

      java使用ZipOutputStream對文件進行壓縮

      目錄

      Java處理文件壓縮的類

      ZipOutStream壓縮文件

      1.putNextEntry(new ZipEntry(""))

      2.write()

      java處理文件壓縮的類

      java中常用ZipOutStream進行文件的壓縮,用ZipInputStream對文件進行解壓,zip相對于其他的文件的io稍有一點點不同的就是:它的內部就是一個小型的文件系統。如果是一個文件夾所有文件都是文檔二不是文件夾。那還好辦直接操作。如果涉及到文件夾和文檔的不固定分布。那就需要仔細考慮下。這里用遞歸進行遍歷。

      ZipOutStream壓縮文件

      主要兩個方法:

      這里面重要的就是ZipEntry這個概念首先要懂。ZipEntry是zip下面的文件條目,你可以比作外面系統的File類似。后面的參數就是在zip目錄下的相對位置。所以這里有一點比較重要的就是當你遍歷文件夾的時候你的ZipEntry的參數的改變規律。寫不好的話會使整個文件目錄混亂(如果文件層級較低那就不礙事)。而putNextEntry(ZipEntry z)的意思就是我下面io操作(寫入)都是在z這個文件條目下進行的。

      這個zipoutputstream流和其他的output流不一樣的地方就是BufferedOutputStream不能嵌套它。也就是它不能套緩存流用。

      對于文件夾下包含文件夾需要特殊考慮。判斷它是不是文件夾。文件夾的話要遍歷他的子節點文件。用遞歸思想。已在代碼中給出注釋。還有文件要注意相對絕對路徑。

      貼上我的模板代碼:

      import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; public class test1 { public static void main(String[] args) throws IOException { String filepath="F:\\fileget\\二班";//目標文件夾 String zipname="F:\\fileget\\二班軟工作業.zip";//目標輸出路徑 filetozip(filepath,zipname); } public static void filetozip(String filepath,String zipname) throws IOException { File file=new File(filepath); OutputStream outputStream=new FileOutputStream(zipname); ZipOutputStream zipout=new ZipOutputStream(outputStream); //遞歸函數 三個參數分別代表 1:當前zipout流 2:當前文件/文件夾 3:在zip下的path dozip(zipout,file,""); zipout.finish(); zipout.close(); outputStream.close(); } private static void dozip(ZipOutputStream zipout, File file, String addpath) throws IOException { if(file.isDirectory()) { File f[]=file.listFiles(); for(int i=0;i

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

      41

      42

      43

      44

      45

      46

      47

      48

      49

      50

      51

      52

      53

      54

      55

      56

      57

      58

      59

      60

      61

      62

      另外,解壓的那個類后面有時間會補充下來。

      如果對后端、爬蟲、數據結構算法等感性趣歡迎關注我的個人公眾號交流:bigsai

      Java

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:web前端必備的VSCode插件
      下一篇:分享幾個開源Java寫的博客系統
      相關文章
      亚洲欧美aⅴ在线资源| 亚洲成人午夜在线| 亚洲AV区无码字幕中文色 | 国产AV日韩A∨亚洲AV电影| 国产成人精品日本亚洲专| 亚洲欧洲自拍拍偷综合| 久久精品国产亚洲AV嫖农村妇女 | 亚洲欧洲专线一区| 亚洲人成色4444在线观看| 亚洲夂夂婷婷色拍WW47| 亚洲午夜无码久久| 亚洲中文字幕久久无码| 亚洲一线产区二线产区区| 亚洲欧美黑人猛交群| 亚洲av纯肉无码精品动漫| 风间由美在线亚洲一区| 亚洲高清最新av网站| 337P日本欧洲亚洲大胆艺术图| 亚洲AV无码片一区二区三区| 国产精品亚洲lv粉色| 九月婷婷亚洲综合在线| 国产av无码专区亚洲国产精品 | 亚洲精品国产肉丝袜久久| 亚洲无限乱码一二三四区| 亚洲成在人线电影天堂色| 亚洲影视自拍揄拍愉拍| 亚洲日韩av无码中文| 久久水蜜桃亚洲AV无码精品| 亚洲AV无码乱码在线观看| 在线精品亚洲一区二区小说| 亚洲午夜久久久影院| 亚洲Av无码精品色午夜| 亚洲最大黄色网站| 亚洲色欲色欲www在线播放| 国产天堂亚洲国产碰碰| 不卡一卡二卡三亚洲| 久久久久亚洲av无码专区蜜芽 | 亚洲美女色在线欧洲美女| 亚洲一区二区三区久久| 亚洲欧好州第一的日产suv| 亚洲AV日韩精品一区二区三区|