现在有一个客户端和一个服务器端,一个是c++实现的,另一个是java实现的,c++端用的是zlib压缩解压缩方式,那么java端应该用那种压缩解压缩方式才能和c++匹配,我用java.zip.ZipOutputStream  方式压缩得到的文件c++侧用zlib解压貌似不行,java中是否也有zlib?zlib是一套公开源代码的压缩,解压缩的函数库,c++中使用只要应用zlib.h头文件,可是java中如何使用??

解决方案 »

  1.   

    在JDK中,在java.util.zip包中已经内置了ZLIB的实现,示例代码如下:1//解压
    2 public String decompressData(String encdata) {
    3 try {
    4 ByteArrayOutputStream bos = new ByteArrayOutputStream();
    5 InflaterOutputStream zos = new InflaterOutputStream(bos);
    6 zos.write(convertFromBase64(encdata));
    7 zos.close();
    8 return new String(bos.toByteArray());
    9 } catch (Exception ex) {
    10 ex.printStackTrace();
    11 return "UNZIP_ERR";
    12 }
    13 }
    14
    15 //压缩
    16 public String compressData(String data) {
    17 try {
    18 ByteArrayOutputStream bos = new ByteArrayOutputStream();
    19 DeflaterOutputStream zos = new DeflaterOutputStream(bos);
    20 zos.write(data.getBytes());
    21 zos.close();
    22 return new String(convertToBase64(bos.toByteArray()));
    23 } catch (Exception ex) {
    24 ex.printStackTrace();
    25 return "ZIP_ERR";
    26 }
    27 }
      

  2.   

    1 你可以把发回来的东西存成文件,用winzip 打开看看
      

  3.   

    老大 你的 convertFromBase64 这个方法在那里实现的啊   ?。