Java 中的 Java.util.zip.ZipOutputStream 类
原文:https://www . geesforgeks . org/Java-util-zip-zippoutstream-class-Java/
这个类实现了一个输出流过滤器,用于以 ZIP 文件格式写入文件。包括对压缩和未压缩条目的支持。 建造师:
- 压缩输出流(输出流输出):创建新的压缩输出流。
- ZIP 输出流(输出流输出,字符集字符集):创建新的 ZIP 输出流。
方法:
-
void close() : 关闭 ZIP 输出流以及正在过滤的流。
java Syntax :public void close() throws IOException Overrides: close in class DeflaterOutputStream Throws: ZipException IOException
-
void closeEntry() : 关闭当前的 ZIP 条目,并定位流以写入下一个条目。
java Syntax :public void closeEntry() throws IOException Throws: ZipException IOException
-
void finish() : 在不关闭底层流的情况下完成 ZIP 输出流的内容写入。当对同一输出流连续应用多个过滤器时,请使用此方法。
java Syntax :public void finish() throws IOException Overrides: finish in class DeflaterOutputStream Throws: ZipException IOException
-
void putNextEntry(zipcentry e):开始写入一个新的 ZIP 文件条目,并将流定位到条目数据的开头。如果当前条目仍处于活动状态,则将其关闭。如果没有为条目指定压缩方法,将使用默认压缩方法,如果条目没有设置修改时间,将使用当前时间。
java Syntax :public void putNextEntry(ZipEntry e) throws IOException Parameters: e - the ZIP entry to be written Throws: ZipException IOException
-
作废设置注释(字符串注释):设置 ZIP 文件注释。
java Syntax :public void setComment(String comment) Parameters: comment - the comment string Throws: IllegalArgumentException
-
void setLevel(int level) : 为后续被放气的条目设置压缩级别。默认设置是 DEFAULT _ COMPRESSION。
java Syntax :public void setLevel(int level) Parameters: level - the compression level (0-9) Throws: IllegalArgumentException
-
void setMethod(int method):设置后续条目的默认压缩方法。只要没有为单个 ZIP 文件条目指定压缩方法,并且最初设置为放气,就会使用此默认值。
java Syntax :public void setMethod(int method) Parameters: method - the default compression method Throws: IllegalArgumentException
-
void write(byte[] b,int off,int len) :向当前 ZIP 条目数据写入一个字节数组。此方法将阻塞,直到所有字节都被写入。
java Syntax :public void write(byte[] b, int off, int len) Parameters: 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]
本文由 尼尚·夏尔马 供稿。如果你喜欢 GeeksforGeeks 并想投稿,你也可以使用contribute.geeksforgeeks.org写一篇文章或者把你的文章邮寄到 contribute@geeksforgeeks.org。看到你的文章出现在极客博客主页上,帮助其他极客。
如果你发现任何不正确的地方,或者你想分享更多关于上面讨论的话题的信息,请写评论。
版权属于:月萌API www.moonapi.com,转载请注明出处