国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

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

2019-11-26 13:51:26
字體:
供稿:網(wǎng)友

我們經(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 + "http://" + inFile.getName()); } else {  String entryName = null;  if (!"".equals(dir))  entryName = dir + "http://" + 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ù)補充相關資料,謝謝大家對本站的支持!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 三门县| 隆化县| 巨鹿县| 东源县| 开江县| 垦利县| 东至县| 望奎县| 田林县| 晋中市| 泌阳县| 常德市| 舟曲县| 尚志市| 五指山市| 沙田区| 沂南县| 海宁市| 邹平县| 玛多县| 安宁市| 南阳市| 突泉县| 正定县| 资源县| 高碑店市| 武汉市| 府谷县| 衡水市| 镇宁| 竹北市| 汪清县| 冀州市| 丰镇市| 城口县| 江阴市| 稻城县| 宜兴市| 绵阳市| 子长县| 平南县|