当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。