一.簡介
壓縮流操作主要的三個類 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() ; // 關閉輸出流 } };