1,壓縮的
import
?java.io.BufferedInputStream;
import
?java.io.BufferedOutputStream;
import
?java.io.File;
import
?java.io.FileInputStream;
import
?java.io.FileOutputStream;
import
?java.util.zip.ZipEntry;
import
?java.util.zip.ZipOutputStream;


public
?
class
?Zip?
{
????
static
?
final
?
int
?BUFFER?
=
?
2048
;


????
public
?
static
?
void
?main(String?argv[])?
{

????????
try
?
{
????????????BufferedInputStream?origin?
=
?
null
;
????????????FileOutputStream?dest?
=
?
new
?FileOutputStream(
"
E:\\test\\myfiles.zip
"
);
????????????ZipOutputStream?out?
=
?
new
?ZipOutputStream(
new
?BufferedOutputStream(
????????????????????dest));
????????????
byte
?data[]?
=
?
new
?
byte
[BUFFER];
????????????File?f?
=
?
new
?File(
"
e:\\test\\a\\
"
);
????????????File?files[]?
=
?f.listFiles();


????????????
for
?(
int
?i?
=
?
0
;?i?
<
?files.length;?i
++
)?
{
????????????????FileInputStream?fi?
=
?
new
?FileInputStream(files[i]);
????????????????origin?
=
?
new
?BufferedInputStream(fi,?BUFFER);
????????????????ZipEntry?entry?
=
?
new
?ZipEntry(files[i].getName());
????????????????out.putNextEntry(entry);
????????????????
int
?count;

????????????????
while
?((count?
=
?origin.read(data,?
0
,?BUFFER))?
!=
?
-
1
)?
{
????????????????????out.write(data,?
0
,?count);
????????????????}
????????????????origin.close();
????????????}
????????????out.close();

????????}
?
catch
?(Exception?e)?
{
????????????e.printStackTrace();
????????}
????}
}
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讀取文件是隨機讀取的,這就造成可能先讀取一個文件
????????????????//而這個文件所在的目錄還沒有出現(xiàn)過,所以要建出目錄來。
????????????????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();
????????}
????}
}
posted on 2008-01-19 15:31
無聲 閱讀(447)
評論(0) 編輯 收藏 所屬分類:
職場生活