BlackBerry - Problema com GZip descompressão
-
22-07-2019 - |
Pergunta
Há um problema estranho que eu correr em usar RIM compressão API , não posso fazê-lo funcionar, como é descrito na documentação.
Se eu gzip arquivo de texto simples usando vitória gzip ferramenta , adicione gz aos recursos de projeto de amora e no aplicativo tentar descompactá-lo, haverá loop infinito, gzis.read () nunca retorna -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)
{
}
Depois do conteúdo comprimido há repetição de 65535 valor em gzis.read (). A única solução que eu encontrei é mudo
while ((c = (char)gzis.read()) != -1 && c != 65535)
Mas estou curioso o que é a razão, o que estou fazendo de errado, e por 65535 ?
Solução
carvão animal é um sem sinal de 16 bits tipo de dados. -1 fundido a um char é 65.535.
Change to:
int i;
while ((i = gzis.read()) != -1)
{
sb.append((char)i);
}
E ele deve funcionar. O exemplo na API da RIM não pode possivelmente trabalho, como nenhuma CHAR sempre igual -1.