使用apache ant.jar压缩excel时,压缩小于50K的excel,会报文件格式未知或压缩数据已经损坏。

解决方案 »

  1.   


    public static File zipFile(String zipName, File[] files) {
          File file = new File(zipName);      try {
             ZipOutputStream out = new ZipOutputStream(file);         for(int i = 0; i < files.length; i++) {
                if(files[i] == null) {
                   continue;
                }            FileInputStream in = new FileInputStream(files[i]);
                ZipEntry entry = new ZipEntry(files[i].getName());
                out.putNextEntry(entry);
                int len = 0;
                byte[] bytes = new byte[256];            while((len = in.read(bytes, 0, bytes.length)) != -1) {
                   out.write(bytes, 0, len);
                }            out.closeEntry();
                in.close();
             }         out.flush();
             out.close();
          }
          catch(Exception e) {
             e.printStackTrace();
          }      return file;
       }
    试试。
      

  2.   

    主要是linux下,当excel小于50K压缩时,会报文件格式未知或者已经损坏的问题,但是在本机上(Window XP)应用正常
      

  3.   

    你看看linux系统编码是什么啊?是不是和你的压缩文件所用的编码一致啊,你的客户端浏览器是在windows下,但压缩程序的服务器是在linux下,这两个需要编码统一才行