Autore Topic: Base64.decode() out of memory  (Letto 401 volte)

Offline Aryon Solutions S.r.l. - Paolo

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung next
  • Sistema operativo:
    Windows 7
Base64.decode() out of memory
« il: 28 Marzo 2013, 09:24:26 CET »
0
Salve a tutti,
Avrei un problema riguardo la decodificazione dei dati ricevuti tramite un web services; questi dati sono troppo grossi (circa 5MB) per essere decodificati. Questa è la parte di codice:

Codice (Java(TM) 2 Platform Standard Edition 5.0): [Seleziona]
        // Loconsole 03/10/2012 - Serve a decomprimere i file Gzip
        /**
         *
         * Riceve una stringa in formato android.util.Base64, la decodifica per poi
         * decomprimerla.
         *
         * @param zipText
         *            parametro in formato stringa da decomprimere
         * @return Dati decompressi
         *
         **/

        public static String decompress(String zipText) throws IOException {
                String sReturn = "";
                try {
                       
                        //creare il filtro per caricare tot dati alla volta
                       
                        byte[] compressed = android.util.Base64.decode(zipText,
                                        android.util.Base64.DEFAULT);
                        if (compressed.length > 4) {
                                GZIPInputStream gzipInputStream = new GZIPInputStream(
                                                new ByteArrayInputStream(compressed, 4,
                                                                compressed.length - 4));

                               
                                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                                for (int value = 0; value != -1;) {
                                        value = gzipInputStream.read();
                                        if (value != -1) {
                                                baos.write(value);
                                        }
                                }
                                gzipInputStream.close();
                                baos.close();
                                sReturn = new String(baos.toByteArray(), "UTF-8");
                        }
                        return sReturn;
                } catch (Exception e) {
                        Log.e("pl_GuiUtils", "Errore di decodifica!");
                        return sReturn;
                }

        }

Grazie in anticipo,
Paolo.