jdk提供了Zip相关的类方便的实现压缩和解压缩。使用方法很简单。下边分别是压缩和解压缩的简单事例
1,压缩的



















































2,解压缩的。import
java.io.BufferedInputStream;
import
java.io.BufferedOutputStream;
import
java.io.File;
import
java.io.FileOutputStream;
import
java.util.Enumeration;
import
java.util.zip.ZipEntry;
import
java.util.zip.ZipFile;
public
class
UnZip
{
static
final
int
BUFFER
=
2048
;
public
static
void
main(String argv[])
{
try
{
String fileName
=
"
E:\\test\\myfiles.zip
"
;
String filePath
=
"
E:\\test\\
"
;
ZipFile zipFile
=
new
ZipFile(fileName);
Enumeration emu
=
zipFile.entries();
int
i
=
0
;
while
(emu.hasMoreElements())
{
ZipEntry entry
=
(ZipEntry)emu.nextElement();
//
会把目录作为一个file读出一次,所以只建立目录就可以,之下的文件还会被迭代到。
if
(entry.isDirectory())
{
new
File(filePath
+
entry.getName()).mkdirs();
continue
;
}
BufferedInputStream bis
=
new
BufferedInputStream(zipFile.getInputStream(entry));
File file
=
new
File(filePath
+
entry.getName());
//
加入这个的原因是zipfile读取文件是随机读取的,这就造成可能先读取一个文件
//
而这个文件所在的目录还没有出现过,所以要建出目录来。
File parent
=
file.getParentFile();
if
(parent
!=
null
&&
(
!
parent.exists()))
{
parent.mkdirs();
}
FileOutputStream fos
=
new
FileOutputStream(file);
BufferedOutputStream bos
=
new
BufferedOutputStream(fos,BUFFER);
int
count;
byte
data[]
=
new
byte
[BUFFER];
while
((count
=
bis.read(data,
0
, BUFFER))
!=
-
1
)
{
bos.write(data,
0
, count);
}
bos.flush();
bos.close();
bis.close();
}
zipFile.close();
}
catch
(Exception e)
{
e.printStackTrace();
}
}
}
PS:
把
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
改成
import org.apache.tools.zip.*;
然后把
Enumeration emu = zipFile.entries();
改成
Enumeration emu = zipFile.getEntries();
就可以支持中文了
转摘自: http://www.blogjava.net/dreamstone/archive/2007/08/09/134986.html