Blackberry - Problem mit gzip Dekompression
-
22-07-2019 - |
Frage
Es ist ein seltsames Problem, das ich habe lief in mit RIM Kompression API , kann ich es nicht funktioniert, wie es in der Dokumentation beschrieben wird.
Wenn ich Textdatei mit gzip win gzip-Tool , fügen gz zu den Ressourcen von Blackberry-Projekt und in App versuchen, dekomprimieren, wird es unendliche Schleife sein, gzis.read () nie wieder zurückkehren -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)
{
}
Nach dem komprimierten Inhalt ist es Wiederholung von 65535 Wert in gzis.read (). Die einzige Abhilfe, die ich gefunden habe, ist stumm
while ((c = (char)gzis.read()) != -1 && c != 65535)
Aber ich bin gespannt, was der Grund dafür ist, was mache ich falsch, und warum? 65535 ?
Lösung
char ist ein unsigned 16-Bit Datentyp. -1 Umwandlung in einen char ist 65535.
Wechsel zu:
int i;
while ((i = gzis.read()) != -1)
{
sb.append((char)i);
}
Und es sollte funktionieren. Das Beispiel auf RIM-API kann unmöglich funktionieren, da kein Zeichen wird immer gleich -1.