Android - Volley Descomprimir zip InputStream

 
Vista:
sin imagen de perfil

Volley Descomprimir zip InputStream

Publicado por cjamdeveloper (1 intervención) el 09/02/2018 04:28:58
Estoy desarrollando una app la cual esta envía ficheros zip hacia un servidor y también recibe , ando usando 2 métodos de comunicación , ahora mismo tengo implementado el método vía correo electrónico , en estos momentos ando implementado él envió y recibo vía peticiones http , por la vía de correo electrónico no tuve ningún problema para comprimir y descomprimir , pero ahora por peticiones HTTP estoy teniendo problemas para descomprimir los ficheros ya que Volley devuelve un responsive de tipo Byte[] cuando realizas una descarga y mi método de descomprimir el parámetro que recibe es de tipo InputStream , en busca de soluciones encontré que podía convertir de Byte[] a input stream pero lamentablemente no funciono el método de descomprimir , mi pregunta es : como podría hacer para poder utilizar ese mismo método de descomprimir incluso siendo el parámetro de tipo Byte[]

El código que use para convertir de byte[] a input Stream fue :
1
InputStream is = new ByteArrayInputStream(decodedBytes);


El código para descomprimir que uso es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
String Decompress(InputStream is) throws Exception {
    byte[] bytes=null;
    String returnValue="";
    ZipInputStream zis = new ZipInputStream(is);
 
    try {
        ZipEntry ze;
        while ((ze = zis.getNextEntry()) != null) {
            String filename = ze.getName();
            if(returnContent)
            {
                if(filename.endsWith("ext"))
                {
                    ByteArrayOutputStream baos = new ByteArrayOutputStream();
                    byte[] buffer = new byte[1024];
                    int count;
                    while ((count = zis.read(buffer)) != -1) {
                        baos.write(buffer, 0, count);
                    }
                    bytes = baos.toByteArray();
                    returnValue=new String(bytes);
                    continue;
                }
            }
 
            if(filename.endsWith("html") || filename.endsWith("txt"))
            {
                timestamp = new Date();
                String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(timestamp);
                filename = "HTML_" + timeStamp + ".html";
            }
 
            if(filename.endsWith("ext") )
            {
                Log.e("n_json", "llego el extra");
 
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                byte[] buffer = new byte[1024];
                int count;
                while ((count = zis.read(buffer)) != -1) {
                    baos.write(buffer, 0, count);
                }
                bytes = baos.toByteArray();
                //this.n_json=new String(bytes);
                Log.e("ext",new String(bytes));
                continue;
            }
 
 
            File f=new File(activity.getFilesDir(),filename);
            FileOutputStream fos=new FileOutputStream(f);
            byte[] buffer = new byte[1024];
            int count;
            while ((count = zis.read(buffer)) != -1) {
                fos.write(buffer, 0, count);
            }
            if(!returnContent && (filename.endsWith("txt") || filename.endsWith("html") ))
                returnValue=f.getPath();
 
            if (filename.endsWith("cache")){
 
                Log.i("vino","vino el fichero de cache "+filename);
                // this.mincache = takenum(filename);
 
            }
 
        }
    } finally {
        zis.close();
    }
    return returnValue;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder