BlackBerry: problema con la descompresión de GZip
-
22-07-2019 - |
Pregunta
Hay un problema extraño al ejecutar API de compresión RIM , no puedo hacer que funcione como se describe en la documentación.
Si gzipé un archivo de texto sin formato usando win gzip tool , agregue gz a los recursos del proyecto blackberry y en la aplicación intente descomprímalo, habrá un bucle infinito, gzis.read () nunca devolverá -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)
{
}
Después del contenido comprimido, hay una repetición del valor 65535 en gzis.read (). La única solución que he encontrado es tonta
while ((c = (char)gzis.read()) != -1 && c != 65535)
Pero tengo curiosidad por cuál es la razón, qué estoy haciendo mal y por qué 65535 ?
Solución
char es un 16-bit sin firmar tipo de datos. -1 lanzado a un personaje es 65535.
Cambiar a:
int i;
while ((i = gzis.read()) != -1)
{
sb.append((char)i);
}
Y debería funcionar. El ejemplo en la API de RIM no puede funcionar, ya que ningún carácter será igual a -1.