一.簡介
壓縮流操作主要的三個類 ZipOutputStream、ZipFile、ZipInputStream ,經常可以看到各種壓縮文件:zip、jar、GZ格式的壓縮文件
二.ZipEntry

說明:在實例化ZipEntry 的時候,要設置名稱,此名稱實際上就是壓縮文件中每一個元素的名稱。
三、ZipOutputStream

四、壓縮一個文件
import java.io.File ;
import java.io.FileInputStream ;
import java.io.InputStream ;
import java.util.zip.ZipEntry ;
import java.util.zip.ZipOutputStream ;
import java.io.FileOutputStream ;
public class ZipOutputStreamDemo01{
public static void main(String args[]) throws Exception{ // 所有異常拋出
File file = new File("d:" + File.separator + "mldn.txt") ; // 定義要壓縮的文件
File zipFile = new File("d:" + File.separator + "mldn.zip") ; // 定義壓縮文件名稱
InputStream input = new FileInputStream(file) ; // 定義文件的輸入流
ZipOutputStream zipOut = null ; // 聲明壓縮流對象
zipOut = new ZipOutputStream(new FileOutputStream(zipFile)) ;
zipOut.putNextEntry(new ZipEntry(file.getName())) ; // 設置ZipEntry對象
zipOut.setComment("www.mldnjava.cn") ; // 設置注釋
int temp = 0 ;
while((temp=input.read())!=-1){ // 讀取內容
zipOut.write(temp) ; // 壓縮輸出
}
input.close() ; // 關閉輸入流
zipOut.close() ; // 關閉輸出流
}
};
五、壓縮一個文件夾

import java.io.File ;
import java.io.FileInputStream ;
import java.io.InputStream ;
import java.util.zip.ZipEntry ;
import java.util.zip.ZipOutputStream ;
import java.io.FileOutputStream ;
public class ZipOutputStreamDemo02{
public static void main(String args[]) throws Exception{ // 所有異常拋出
File file = new File("d:" + File.separator + "mldn") ; // 定義要壓縮的文件夾
File zipFile = new File("d:" + File.separator + "mldndir.zip") ; // 定義壓縮文件名稱
InputStream input = null ; // 定義文件輸入流
ZipOutputStream zipOut = null ; // 聲明壓縮流對象
zipOut = new ZipOutputStream(new FileOutputStream(zipFile)) ;
zipOut.setComment("www.mldnjava.cn") ; // 設置注釋
int temp = 0 ;
if(file.isDirectory()){ // 判斷是否是文件夾
File lists[] = file.listFiles() ; // 列出全部文件
for(int i=0;i<lists.length;i++){
input = new FileInputStream(lists[i]) ; // 定義文件的輸入流
zipOut.putNextEntry(new ZipEntry(file.getName()
+File.separator+lists[i].getName())) ; // 設置ZipEntry對象
while((temp=input.read())!=-1){ // 讀取內容
zipOut.write(temp) ; // 壓縮輸出
}
input.close() ; // 關閉輸入流
}
}
zipOut.close() ; // 關閉輸出流
}
};
六、 ZipFile

第一步:為 ZipFile 實例化,實例化時需要接收File 類的引用
import java.io.File ;
import java.io.FileInputStream ;
import java.io.InputStream ;
import java.util.zip.ZipEntry ;
import java.util.zip.ZipOutputStream ;
import java.util.zip.ZipFile ;
import java.io.FileOutputStream ;
public class ZipFileDemo01{
public static void main(String args[]) throws Exception{ // 所有異常拋出
File file = new File("d:" + File.separator + "mldn.zip") ; // 找到壓縮文件
ZipFile zipFile = new ZipFile(file) ; // 實例化ZipFile對象
System.out.println("壓縮文件的名稱:" + zipFile.getName()) ; // 得到壓縮文件的名稱
}
};
通過ZipFile 文件,為mldn.zip 進行解壓縮操作
import java.io.File ;
import java.io.FileInputStream ;
import java.io.InputStream ;
import java.util.zip.ZipEntry ;
import java.util.zip.ZipOutputStream ;
import java.io.FileOutputStream ;
public class ZipOutputStreamDemo02{
public static void main(String args[]) throws Exception{ // 所有異常拋出
File file = new File("d:" + File.separator + "mldn") ; // 定義要壓縮的文件夾
File zipFile = new File("d:" + File.separator + "mldndir.zip") ; // 定義壓縮文件名稱
InputStream input = null ; // 定義文件輸入流
ZipOutputStream zipOut = null ; // 聲明壓縮流對象
zipOut = new ZipOutputStream(new FileOutputStream(zipFile)) ;
zipOut.setComment("www.mldnjava.cn") ; // 設置注釋
int temp = 0 ;
if(file.isDirectory()){ // 判斷是否是文件夾
File lists[] = file.listFiles() ; // 列出全部文件
for(int i=0;i<lists.length;i++){
input = new FileInputStream(lists[i]) ; // 定義文件的輸入流
zipOut.putNextEntry(new ZipEntry(file.getName()
+File.separator+lists[i].getName())) ; // 設置ZipEntry對象
while((temp=input.read())!=-1){ // 讀取內容
zipOut.write(temp) ; // 壓縮輸出
}
input.close() ; // 關閉輸入流
}
}
zipOut.close() ; // 關閉輸出流
}
};
