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() ; // 關閉輸出流 } };
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.io.OutputStream ; import java.util.zip.ZipEntry ; import java.util.zip.ZipOutputStream ; import java.util.zip.ZipFile ; import java.io.FileOutputStream ; public class ZipFileDemo02{ public static void main(String args[]) throws Exception{ // 全部異常拋出 File file = new File("d:" + File.separator + "mldn.zip") ; // 找到壓縮文件 File outputFile = new File("d:" + File.separator + "mldn_unzip.txt") ; // 定義解壓縮的文件名稱 ZipFile zipFile = new ZipFile(file) ; // 實例化ZipFile對象 ZipEntry entry = zipFile.getEntry("mldn.txt") ; // 獲得一個壓縮實體 OutputStream out = new FileOutputStream(outputFile) ; // 實例化輸出流 InputStream input = zipFile.getInputStream(entry) ; // 獲得一個壓縮實體的輸入流 int temp = 0 ; while((temp=input.read())!=-1){ out.write(temp) ; } input.close() ; // 關閉輸入流 out.close() ; // 關閉輸出流 } };以上的操做操做中,有一個問題,必須知道壓縮文件中的每個壓縮實例的名稱才能夠進行解壓縮操做,而若是如今假設是一個文件夾呢?
import java.io.File ; import java.io.FileInputStream ; import java.io.InputStream ; import java.util.zip.ZipEntry ; import java.util.zip.ZipInputStream ; import java.io.FileInputStream ; public class ZipInputStreamDemo01{ public static void main(String args[]) throws Exception{ // 全部異常拋出 File zipFile = new File("d:" + File.separator + "mldn.zip") ; // 定義壓縮文件名稱 ZipInputStream input = null ; // 定義壓縮輸入流 input = new ZipInputStream(new FileInputStream(zipFile)) ; // 實例化ZIpInputStream ZipEntry entry = input.getNextEntry() ; // 獲得一個壓縮實體 System.out.println("壓縮實體名稱:" + entry.getName()) ; input.close() ; } };
import java.io.File ; import java.io.OutputStream ; import java.io.InputStream ; import java.util.zip.ZipEntry ; import java.util.zip.ZipFile ; import java.util.zip.ZipInputStream ; import java.io.FileInputStream ; import java.io.FileOutputStream ; public class ZipInputStreamDemo02{ public static void main(String args[]) throws Exception{ // 全部異常拋出 File file = new File("d:" + File.separator + "mldndir.zip") ; // 定義壓縮文件名稱 File outFile = null ; // 輸出文件的時候要有文件夾的操做 ZipFile zipFile = new ZipFile(file) ; // 實例化ZipFile對象 ZipInputStream zipInput = null ; // 定義壓縮輸入流 OutputStream out = null ; // 定義輸出流,用於輸出每個實體內容 InputStream input = null ; // 定義輸入流,讀取每個ZipEntry ZipEntry entry = null ; // 每個壓縮實體 zipInput = new ZipInputStream(new FileInputStream(file)) ; // 實例化ZIpInputStream while((entry = zipInput.getNextEntry())!=null){ // 獲得一個壓縮實體 System.out.println("解壓縮" + entry.getName() + "文件。") ; outFile = new File("d:" + File.separator + entry.getName()) ; // 定義輸出的文件路徑 if(!outFile.getParentFile().exists()){ // 若是輸出文件夾不存在 outFile.getParentFile().mkdir() ; // 建立文件夾 } if(!outFile.exists()){ // 判斷輸出文件是否存在 outFile.createNewFile() ; // 建立文件 } input = zipFile.getInputStream(entry) ; // 獲得每個實體的輸入流 out = new FileOutputStream(outFile) ; // 實例化文件輸出流 int temp = 0 ; while((temp=input.read())!=-1){ out.write(temp) ; } input.close() ; // 關閉輸入流 out.close() ; // 關閉輸出流 } input.close() ; } };