???????????javaWeb?????????java????????????????????????????????ú??????????????
??????????zip??????????????????
????java???й?zip???????????????java.util.zip???У???java???zip???????????????????java???????Щ????????
???????????java???zip????漰???????“?????????”?????
??????java???????????zip????????????????????

????????????????????????????????????zip?????д????????????????????????е????????????????е????????????С?
????????????????????
import java.io.*;
import java.util.*;
import java.util.zip.*;
class ZipCompress
{
private String zipFileName;      // ????Zip???
private String sourceFileName;   //??????????????????????У?
public ZipCompress(String zipFileName??String sourceFileName)
{
this.zipFileName=zipFileName;
this.sourceFileName=sourceFileName;
}
public void zip() throws Exception
{
//File zipFile = new File(zipFileName);
System.out.println("?????...");
//????zip?????
ZipOutputStream out = new ZipOutputStream( new FileOutputStream(zipFileName));
//?????????????
BufferedOutputStream bos = new BufferedOutputStream(out);
File sourceFile = new File(sourceFileName);
//???ú???
compress(out??bos??sourceFile??sourceFile.getName());
bos.close();
out.close();
System.out.println("??????");
}
public void compress(ZipOutputStream out??BufferedOutputStream bos??File sourceFile??String base) throws Exception
{
//???·???????????У?
if(sourceFile.isDirectory())
{
//?????????е??????????????У?
File[] flist = sourceFile.listFiles();
if(flist.length==0)//???????????????????????zip?????д????????????
{
System.out.println(base+"/");
out.putNextEntry(  new ZipEntry(base+"/") );
}
else//???????в????????????compress????????е????????????????У????????
{
for(int i=0;i<flist.length;i++)
{
compress(out??bos??flist[i]??base+"/"+flist[i].getName());
}
}
}
else//???????????????У???????????????д???????????????д??zip?????
{
out.putNextEntry( new ZipEntry(base) );
FileInputStream fos = new FileInputStream(sourceFile);
BufferedInputStream bis = new BufferedInputStream(fos);
int tag;
System.out.println(base);
//??????д??zip?????
while((tag=bis.read())!=-1)
{
bos.write(tag);
}
bis.close();
fos.close();
}
}
}
public class TestZip
{
public static void main(String[] args)
{
ZipCompress zipCom = new ZipCompress("D:\???.zip"??"F:\???");
try
{
zipCom.zip();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
????zip()???????????????ZipOutputStream??zip?????????????compress()????
??????compress()??????????????????????е??????????????
???????????
?????????ж???????????????л?????????????????????????????????????????????compress()?????????????е??????
????????????????????zip?????д??????????????ν?????????????????????????zip????е?·????
??????????????????FileInputStream????????????棬????ZipOutputStream??zip?????????????????????д??zip????У?????????????????????????????????
?????????????????????д??????????????????????????""??????????????
???????н?????
??????????

?????????????1?к?????????????????2 ????
????????????????

????????????????е??????????????""?????????????У???????????????????????????е?""?????????????

?????????????????????е??????2???????????????????????????????????????zip????ж????·??????????·??????????????е????·????£????????????£???????????base?????????????"???"??
????out.putNextEntry( new ZipEntry("???"+base) );
??????????

???????????zip?е?????????“??????”?????????????