欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java 壓縮和解壓縮Zip、Jar、Gzip文件實例代碼

 更新時間:2016年09月08日 17:57:34   投稿:lqh  
本文主要介紹java壓縮和解壓縮Zip、Jar、Gzip文件的知識,這里整理了相關資料,并附示例代碼有興趣的小伙伴可以參考下

我們經(jīng)常會使用WinZIP等壓縮軟件將文件進行壓縮以方便傳輸。在java里面也提供了將文件進行壓縮以減少傳輸時的數(shù)據(jù)量的類,可以很方便的將文件壓縮成ZIP、JAR、GZIP等形式,GZIP主要是在Linux系統(tǒng)下的壓縮文件。

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

ZIP是一種很常見的壓縮形式,在java中要實現(xiàn)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對象加入到壓縮文件中,而之后往壓縮文件中寫入的內(nèi)容都會放在這個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 壓縮和解壓縮文件的資料整理,后續(xù)繼續(xù)補充相關資料,謝謝大家對本站的支持!

相關文章

  • stream中使用peek一些陷阱避免及解決方法

    stream中使用peek一些陷阱避免及解決方法

    這篇文章主要為大家介紹了stream中使用peek一些陷阱避免及解決方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • Java中父類和子類之間的轉(zhuǎn)換操作示例

    Java中父類和子類之間的轉(zhuǎn)換操作示例

    這篇文章主要介紹了Java中父類和子類之間的轉(zhuǎn)換操作,結合實例形式分析了Java中父類和子類之間的轉(zhuǎn)換相關原理、操作技巧與使用注意事項,需要的朋友可以參考下
    2020-05-05
  • Mybatis配置之typeAlias標簽的用法

    Mybatis配置之typeAlias標簽的用法

    這篇文章主要介紹了Mybatis配置之typeAlias標簽的用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java實現(xiàn)下載文件的6種方式

    Java實現(xiàn)下載文件的6種方式

    本文主要介紹了Java實現(xiàn)下載文件的6種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • Java 小游戲開發(fā)之俄羅斯方塊

    Java 小游戲開發(fā)之俄羅斯方塊

    這篇文章主要介紹了Java 小游戲開發(fā)之俄羅斯方塊的相關資料,這里實現(xiàn)俄羅斯方塊的實例和實現(xiàn)效果給大家看下,學習java基礎的朋友的好資料,需要的朋友可以參考下
    2017-07-07
  • 分享Java常用幾種加密算法(四種)

    分享Java常用幾種加密算法(四種)

    Base64是網(wǎng)絡上最常見的用于傳輸8Bit字節(jié)代碼的編碼方式之一,大家可以查看RFC2045~RFC2049,上面有MIME的詳細規(guī)范。本文給大家分享java常用的幾種加密算法,需要的朋友可以參考下
    2015-10-10
  • 使用Java自帶的mail?API實現(xiàn)郵件發(fā)送功能全過程

    使用Java自帶的mail?API實現(xiàn)郵件發(fā)送功能全過程

    電子郵件的應用非常廣泛,例如在某網(wǎng)站注冊了一個賬戶,自動發(fā)送一封歡迎郵件,通過郵件找回密碼,自動批量發(fā)送活動信息等,下面這篇文章主要給大家介紹了關于如何使用Java自帶的mail?API實現(xiàn)郵件發(fā)送功能的相關資料,需要的朋友可以參考下
    2023-04-04
  • spring?jpa設置多個主鍵遇到的小坑及解決

    spring?jpa設置多個主鍵遇到的小坑及解決

    這篇文章主要介紹了spring?jpa設置多個主鍵遇到的小坑及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 如何將Object類轉(zhuǎn)換為實體類

    如何將Object類轉(zhuǎn)換為實體類

    這篇文章主要介紹了如何將Object類轉(zhuǎn)換為實體類,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • spring中12種@Transactional的失效場景(小結)

    spring中12種@Transactional的失效場景(小結)

    日常我們進行業(yè)務開發(fā)時,基本上使用的都是聲明式事務,即為使用@Transactional注解的方式,本文主要介紹了spring中12種@Transactional的失效場景,感興趣的小伙伴們可以參考一下
    2022-01-01

最新評論