现有一个用GZIPOutputStream()压缩过的字符串,用下面方法解压,可是数组中没有数据,请问那里出错了?
public static byte[] gzip(String s)
{
byte[] z = new byte[1024];
ByteArrayInputStream buff = new ByteArrayInputStream(s.getBytes());
try
{
GZIPInputStream in = new GZIPInputStream(buff); //gzip
in.read(z,0,z.length);
in.close(); }
catch(IOException e)
{}
return z;
}

解决方案 »

  1.   

    直接从getBytes得到的字节数组里unzip出数据来?
    等着在下面的catch里捕获异常吧。
      

  2.   

    你的byte数组来源不可能来自一个String的getBytes,肯定得来自一个包含已压缩数据的byte数组或者流啊。
    你可以把一个字符串->得到byte数组->压缩->得到压缩后的byte数组->解压缩->生成字符串,这样的过程来测试GZIPInputStream/GZIPOutputStream类。
      

  3.   

    楼上的说的对,但如果你要用压缩后的数据再以字符形式传送再解压的话就要经过别的转换了,不要直接用getBytes方法,最好用byteToHex之类的,比较简单自己写一个,或网上找一下n多。然后再反向转成byte[]再解压,目的就是你解压的输入byte[]要和你压缩时的输出byte[]是完全一样的
      

  4.   

    你先看看用winrar解压一下,看看压缩过程中是不是已经没有数据了