程序如下:(一部分是copy的)
package zipfile;
import  java.util.zip.*;
import  java.io.*;public  class  makeZIP
{
    static  final  int  BUFFER=2048*5;
    static  BufferedInputStream  orign=null;
    static  int  count=0;
    public  static  void  main(String[]  args)
    {
        try{
            String  path="j:\\ws1";
            compress(path);
        }catch  (Exception  e){
            e.printStackTrace();
        }
    }
    public  static  void  compress(String  root)throws  Exception
    {
        try{                //建立目标输出流
            FileOutputStream  dest=new  FileOutputStream("j:\\zip\\ws.zip");
            ZipOutputStream  out=new  ZipOutputStream(  new  BufferedOutputStream(dest)  );
            //实例化新文件
            File  f=new  File(root);
            String[]  files=f.list();
            String  d=null;
           // byte[]  data=new  byte[BUFFER];
            byte[]  data=new  byte[BUFFER];
            System.out.println("root  is"+root);
            for(int  i=0;i<files.length;i++)
            {
                File  f1=new  File(root,files[i]);
                //如果是文件,进行压缩
                if(f1.isFile()  )
                {                    //加文件路径,否则找不到文件!!
                    d=root  +  "\\"  +files[i];
                    System.out.println(d);
                   //设置文件输入流
                    FileInputStream  in=new  FileInputStream(d);
                    orign=new  BufferedInputStream(in,BUFFER);
                    //为读出的数据创建一个zip条目表
                    ZipEntry  entry=new  ZipEntry(d);
                    //将zip条目列表写入输出流
                    out.putNextEntry(entry);                //    while(  (count=orign.read(data,0,BUFFER))!=-1)
                //    {
                //        System.out.println("要处理的文件集:"+d);
                //        out.write(data,0,BUFFER);
                //    }
                    while ( (count = orign.read())!=-1)
                    {
                        out.write(count);
                    }                    count=0;
                    orign.close();
                }
                //如果是子目录进行递归调用!
                                     else{
                                                             String  sub=f1.getPath();
                                                         System.out.println("sub  is:"+sub);
                                                         compress(sub);
                                             }
            }
            out.close();
            }catch(Exception  e){throw  e;}
    }
}
现在测试存在几个问题:中文文件名解压时显示不对,包含子目录的文件上传有错误,请指教