黑莓手机 - 问题用gzip压缩
-
22-07-2019 - |
题
有一个奇怪的问题,我使用的 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。
不隶属于 StackOverflow