700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > java zipfile用法_Java使用ZipFile类实现Zip文件解压

java zipfile用法_Java使用ZipFile类实现Zip文件解压

时间:2020-06-02 20:36:29

相关推荐

java zipfile用法_Java使用ZipFile类实现Zip文件解压

java.util.zip.ZipFile类用于从 ZIP 文件读取条目。 即从给定的ZIP压缩文件中获取所有文件的信息,如:文件的名称、是否为目录等信息。可以使用这个类来实现将zip文件进行解压操作。

ZipFile类的构造方法:ZipFile(Filefile)

使用给定的File对象打开一个Zip文件。ZipFile(Filefile,intmode)

打开新的 ZipFile 以使用指定模式从指定 File 对象读取。 其中有下面两种模式:

OPEN_DELETE 打开 ZIP 文件并将其标记为删除的模式标志。

OPEN_READ 打开 ZIP 文件进行阅读的模式标志。ZipFile(Stringname)

打开 ZIP 文件进行阅读。 该构造器内部使用name来构造一个File对象。代码如下:publicZipFile(Stringname,Charsetcharset)throwsIOException{

this(newFile(name),OPEN_READ,charset);

}

实例:使用ZipFile对象来解压给定的ZIP压缩文件,解压缩出来的文件和压缩前文件的目录结构一致。注意:目前不支持压缩文件中存在中文名称的文件。

Eclipase工程结构图如下:

Java代码如下:packagecom.bug315;

importjava.io.BufferedInputStream;

importjava.io.BufferedOutputStream;

importjava.io.File;

importjava.io.FileOutputStream;

importjava.io.IOException;

importjava.util.Enumeration;

importjava.util.zip.ZipEntry;

importjava.util.zip.ZipFile;

/**

*使用ZipFile类来对zip压缩文件进行解压操作(包括压缩文件的目录层次)

*@authoradmin

*

*注意:目前测试在处理压缩文件中存在中文名称的文件会存在问题

*

*/

publicclassZipFileTest01{

publicstaticvoidmain(String[]args){

ZipFilezipFile=null;

try{

zipFile=newZipFile(newFile("docs/test.zip"));

/**

*基本信息输出

*/

System.out.println("压缩文件路径名称:"+zipFile.getName());

//包含目录和文件

System.out.println("压缩文件中文件个数:"+zipFile.size());

//返回压缩文件名称为”Test.java“的文件的ZipEntry对象

ZipEntrytestEntry=zipFile.getEntry("Test.java");

System.out.println("Test.java文件的ZipEntry:"+testEntry.getSize()+"KB");

/**

*遍历压缩文件中的所有文件

*/

Enumeration>entrys=zipFile.entries();

while(entrys.hasMoreElements()){

/**

*获取压缩文件中的文件,在Java中将每个文件使用ZipEntry进行表示

*/

ZipEntryentry=(ZipEntry)entrys.nextElement();

System.out.println("文件解压中……"+entry.getName());

/**

*如果获取的ZipEntry表示目录,则创建目录

*/

if(entry.isDirectory()){

FiletempFile=newFile("docs/temp/"+entry.getName());

if(!tempFile.exists()){

if(!tempFile.mkdirs()){

thrownewRuntimeException("创建目录结构失败:"+entry.getName());

}

}

}

/**

*如果获取的ZipEntry表示文件,则将文件写出到相应的解压目录中

*/

else{

BufferedInputStreaminput=newBufferedInputStream(

zipFile.getInputStream(entry));

BufferedOutputStreamoutput=newBufferedOutputStream(

newFileOutputStream("docs/temp/"+entry.getName()));

//写出数据

intlen=-1;

byte[]bytes=newbyte[2048];

while((len=input.read(bytes))!=-1){

output.write(bytes,0,len);

}

output.close();

input.close();

}

}

}catch(Exceptione){

e.printStackTrace();

}finally{

if(null!=zipFile){

try{

zipFile.close();

zipFile=null;

}catch(IOExceptione){

e.printStackTrace();

}

}

}

}//

}

输出结果:

压缩文件路径名称:docs\test.zip

压缩文件中文件个数:10

Test.java文件的ZipEntry:2636

文件解压中…… CalculatorMain.class

文件解压中…… Java6JVM.txt

文件解压中…… Test.java

文件解压中…… test/

文件解压中…… test/test-02/

文件解压中…… test/test-02/test-03/

文件解压中…… test/test-02/test-03/whatIs2.txt

文件解压中…… test/test-02/whatIs.txt

文件解压中…… test/whatIs.txt

文件解压中…… test.sql

在上面这个例子中,基本上把ZipFile类的所有方法都使用了。ZipFile更详细的资料请参考API文档。希望能够给你提供帮助……

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。