有一个奇怪的问题,我使用的 RIM压缩API ,我不能做,因为它在文档定律描述它的工作。结果 如果我使用双赢的gzip工具 gzip压缩的纯文本文件,添加到广州黑莓项目的资源和应用尝试解压缩,将有无限循环,gzis.read()永远不会返回-1 ...

try
{
    InputStream inputStream = getClass().getResourceAsStream("test.gz");
    GZIPInputStream gzis = new GZIPInputStream(inputStream);
    StringBuffer sb = new StringBuffer();

    char c;
    while ((c = (char)gzis.read()) != -1)           
    {
        sb.append(c);
    }

    String data = sb.toString();
    add(new RichTextField(data));
    gzis.close();
}
catch(IOException ioe)
{
}

压缩内容以后,会在gzis.read 65535值的重复()。我发现的唯一的解决方法是哑

while ((c = (char)gzis.read()) != -1 && c != 65535) 

不过我很好奇,是什么原因,我做错了什么,为什么的 65535

有帮助吗?

解决方案

是一个无符号的16位数据类型。 -1铸造为一个字符是65535。

更改为:

int i;
while ((i = gzis.read()) != -1)           
{
  sb.append((char)i);
}

和它应该工作。上RIM的API的例子不可能工作,因为无炭将永远等于-1。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top