
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 :
El código para descomprimir que uso es el siguiente:
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


0