BlackBerry - GZip 解压问题
我在使用 RIM 压缩 API,我无法使其按照文档中的描述工作。
如果我使用 win gzip 工具 gzip 纯文本文件,请将 gz 添加到黑莓项目的资源中,并在应用程序中尝试解压缩它,将会出现无限循环,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?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
char 是无符号的 16 位数据类型。 -1 转换为 char 是 65535。
更改为:
它应该可以工作。 RIM API 上的示例不可能工作,因为没有任何字符会等于 -1。
char is an unsigned, 16-bit data type. -1 cast to a char is 65535.
Change to:
And it should work. The example on RIM's API can't possibly work, as no char will ever equal -1.