當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java Java.util.zip.ZipOutputStream用法及代碼示例


此類實現一個輸出流過濾器,用於以 ZIP 文件格式寫入文件。包括對壓縮和未壓縮條目的支持。
構造函數:

  • ZipOutputStream(輸出流輸出):創建新的 ZIP 輸出流。
  • ZipOutputStream(輸出流輸出,字符集字符集):創建新的 ZIP 輸出流。

方法:

  • 無效close():關閉 ZIP 輸出流以及正在過濾的流。
    Syntax :public void close()
               throws IOException
    Overrides:
    close in class DeflaterOutputStream
    Throws:
    ZipException 
    IOException
  • 無效closeEntry():關閉當前 ZIP 條目並定位流以寫入下一個條目。
    Syntax :public void closeEntry()
                    throws IOException
    Throws:
    ZipException 
    IOException 
  • 無效finish():完成 ZIP 輸出流內容的寫入,而不關閉底層流。當連續將多個過濾器應用於同一輸出流時,請使用此方法。
    Syntax :public void finish()
                throws IOException
    Overrides:
    finish in class DeflaterOutputStream
    Throws:
    ZipException
    IOException
  • void putNextEntry(ZipEntry e):開始寫入新的 ZIP 文件條目並將流定位到條目數據的開頭。如果當前條目仍處於活動狀態,則關閉當前條目。如果條目沒有指定壓縮方法,則使用默認壓縮方法;如果條目沒有設置修改時間,則使用當前時間。
    Syntax :public void putNextEntry(ZipEntry e)
                      throws IOException
    Parameters:
    e - the ZIP entry to be written
    Throws:
    ZipException 
    IOException
  • void setComment(字符串注釋):設置 ZIP 文件注釋。
    Syntax :public void setComment(String comment)
    參數:
    comment - the comment string
    Throws:
    IllegalArgumentException
  • 無效setLevel(int級別):設置 DEFLATED 後續條目的壓縮級別。默認設置為 DEFAULT_COMPRESSION。
    Syntax :public void setLevel(int level)
    參數:
    level - the compression level (0-9)
    Throws:
    IllegalArgumentException
  • 無效setMethod(int方法):設置後續條目的默認壓縮方法。隻要未為單個 ZIP 文件條目指定壓縮方法,並且最初設置為 DEFLATED,就會使用此默認值。
    Syntax :public void setMethod(int method)
    參數:
    method - the default compression method
    Throws:
    IllegalArgumentException
  • void write(byte[] b, int off, int len):將字節數組寫入當前 ZIP 條目數據。該方法將阻塞,直到所有字節都被寫入。
    Syntax :public void write(byte[] b,
             int off,
             int len)
    參數:
    b - the data to be written
    off - the start offset in the data
    len - the number of bytes that are written
    Throws:
    ZipException
    IOException

程序:


//Java program demonstrating ZipOutputStream methods 
  
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.util.Arrays; 
import java.util.zip.ZipEntry; 
import java.util.zip.ZipInputStream; 
import java.util.zip.ZipOutputStream; 
  
class ZipOutputStreamDemo 
{ 
    public static void main(String[] args) throws IOException  
    { 
          
        FileOutputStream fos = new FileOutputStream("zipfile"); 
        ZipOutputStream zos = new ZipOutputStream(fos); 
  
        //illustrating setMethod() 
        zos.setMethod(8); 
          
        //illustrating setLevel method 
        zos.setLevel(5); 
  
        ZipEntry ze1 = new ZipEntry("ZipEntry1"); 
      
        //illustrating putNextEntry method 
        zos.putNextEntry(ze1); 
      
        //illustrating setComment 
        zos.setComment("This is my first comment"); 
  
        //illustrating write() 
        for(int i = 0; i < 10; i++) 
            zos.write(i); 
      
        //illustrating write(byte b[], int off, int len) 
        byte b[] = { 11, 12, 13}; 
        zos.write(b); 
  
  
        //illustrating closeEntry() 
        zos.closeEntry(); 
          
        //Finishes writing the contents of the ZIP output stream 
        // without closing the underlying stream 
        zos.finish(); 
          
        //closing the stream 
        zos.close(); 
  
        FileInputStream fin = new FileInputStream("zipfile"); 
        ZipInputStream zin = new ZipInputStream(fin); 
  
        //Reads the next ZIP file entry 
        ZipEntry ze = zin.getNextEntry(); 
  
        //the name of the entry. 
        System.out.println(ze.getName()); 
  
        //illustrating getMethod 
        System.out.println(ze.getMethod()); 
  
        //Reads up to byte.length bytes of data from this input stream 
        // into an array of bytes. 
        byte c[] = new byte[13]; 
          
        if(zin.available() == 1) 
            zin.read(c); 
  
        System.out.print(Arrays.toString(c)); 
          
        //closes the current ZIP entry 
        zin.closeEntry(); 
          
        //closing the stream 
        zin.close(); 
  
    } 
} 

輸出:

ZipEntry1
8
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13]


相關用法


注:本文由純淨天空篩選整理自佚名大神的英文原創作品 Java.util.zip.ZipOutputStream class in Java。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。