java 壓縮和解壓縮Zip、Jar、Gzip檔案執行個體代碼_java

來源:互聯網
上載者:User

我們經常會使用WinZIP等壓縮軟體將檔案進行壓縮以方便傳輸。在java裡面也提供了將檔案進行壓縮以減少傳輸時的資料量的類,可以很方便的將檔案壓縮成ZIP、JAR、GZIP等形式,GZIP主要是在Linux系統下的壓縮檔。

下面主要講的就是ZIP形式的壓縮檔,而JAR、GZIP形式的壓縮檔也是類似的用法。

ZIP是一種很常見的壓縮形式,在java中要實現ZIP的壓縮主要用到的是java.util.zip這個包裡面的類。主要有ZipFile、 ZipOutputStream、ZipInputStream和ZipEntry。ZipOutputStream是用來壓縮檔 的,ZipInputStream和ZipFile是用來解壓縮檔案的,在壓縮和解壓縮的過程中,ZipEntry都會用到。在java的Zip壓縮檔 中,每一個子檔案都是一個ZipEntry對象。

壓縮檔:

import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.nio.charset.Charset;import java.util.zip.ZipEntry;import java.util.zip.ZipOutputStream;public class ZipOutputStreamTest { public static void main(String args[]) throws IOException { test1(); test2(); }  public static void test1() throws IOException { ZipOutputStream zos = new ZipOutputStream(new FileOutputStream("D:\\testZip.zip"), Charset.forName("GBK")); //執行個體化一個名稱為ab.txt的ZipEntry對象 ZipEntry entry = new ZipEntry("ab.txt"); //設定注釋 zos.setComment("zip測試for單個檔案"); //把產生的ZipEntry對象加入到壓縮檔中,而之後往壓縮檔中寫入的內容都會放在這個ZipEntry對象裡面 zos.putNextEntry(entry); InputStream is = new FileInputStream("D:\\ab.txt"); int len = 0; while ((len = is.read()) != -1)  zos.write(len); is.close(); zos.close(); }  public static void test2() throws IOException { File inFile = new File("D:\\test"); ZipOutputStream zos = new ZipOutputStream(new FileOutputStream("D:\\test.zip"), Charset.forName("GBK")); zos.setComment("多檔案處理"); zipFile(inFile, zos, ""); zos.close(); }  public static void zipFile(File inFile, ZipOutputStream zos, String dir) throws IOException { if (inFile.isDirectory()) {  File[] files = inFile.listFiles();  for (File file:files)  zipFile(file, zos, dir + "\\" + inFile.getName()); } else {  String entryName = null;  if (!"".equals(dir))  entryName = dir + "\\" + inFile.getName();  else  entryName = inFile.getName();  ZipEntry entry = new ZipEntry(entryName);  zos.putNextEntry(entry);  InputStream is = new FileInputStream(inFile);  int len = 0;  while ((len = is.read()) != -1)  zos.write(len);  is.close(); } } }

解壓縮檔案:

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.nio.charset.Charset;import java.util.zip.ZipEntry;import java.util.zip.ZipFile;import java.util.zip.ZipInputStream;public class ZipInputStreamTest { public static void main(String args[]) throws IOException { File file = new File("D:\\test.zip");//壓縮檔 ZipFile zipFile = new ZipFile(file);//執行個體化ZipFile,每一個zip壓縮檔都可以表示為一個ZipFile //執行個體化一個Zip壓縮檔的ZipInputStream對象,可以利用該類的getNextEntry()方法依次拿到每一個ZipEntry對象 ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(file), Charset.forName("GBK")); ZipEntry zipEntry = null; while ((zipEntry = zipInputStream.getNextEntry()) != null) {  String fileName = zipEntry.getName();  File temp = new File("D:\\unpackTest\\" + fileName);  if (! temp.getParentFile().exists())  temp.getParentFile().mkdirs();  OutputStream os = new FileOutputStream(temp);  //通過ZipFile的getInputStream方法拿到具體的ZipEntry的輸入資料流  InputStream is = zipFile.getInputStream(zipEntry);  int len = 0;  while ((len = is.read()) != -1)  os.write(len);  os.close();  is.close(); } zipInputStream.close(); } }

以上就是對Java 壓縮和解壓縮檔案的資料整理,後續繼續補充相關資料,謝謝大家對本站的支援!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.