java IO流 Zip文件操作


一.簡介

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM