Foros del Web » Programación para mayores de 30 ;) » Java »

¿Qué me falla en este compresor/descompresor?

Estas en el tema de ¿Qué me falla en este compresor/descompresor? en el foro de Java en Foros del Web. Estoy intentando hacer un compresor en java, y al ejecutarlo me devuelve estos errores: java.lang.NullPointerException at javaapplication1.CompresorArchivos.Comprimir(Compr esorArchivos.java:47) at javaapplication1.CompresorArchivos.main(CompresorA rchivos.java:88) Me estoy volviendo loco, ...
  #1 (permalink)  
Antiguo 29/11/2013, 13:08
 
Fecha de Ingreso: mayo-2008
Mensajes: 37
Antigüedad: 15 años, 11 meses
Puntos: 5
¿Qué me falla en este compresor/descompresor?

Estoy intentando hacer un compresor en java, y al ejecutarlo me devuelve estos errores:

java.lang.NullPointerException
at javaapplication1.CompresorArchivos.Comprimir(Compr esorArchivos.java:47)
at javaapplication1.CompresorArchivos.main(CompresorA rchivos.java:88)


Me estoy volviendo loco, en que falla el programa? como lo arreglo? Muchas gracias por leerme

Cita:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/

package javaapplication1;

/**
*
* @author albertos
*/
import java.util.zip.*;
import java.io.*;

public class CompresorArchivos {

private static final int TAMANO_BYTES = 1024;

public void Comprimir(String pFile, String pZipFile) throws Exception {
// objetos en memoria
FileInputStream fis = null;
FileOutputStream fos = null;
ZipOutputStream zipos = null;

// buffer
byte[] buffer = new byte[TAMANO_BYTES];
try {
// fichero a comprimir
fis = new FileInputStream(pFile);
// fichero contenedor del zip
fos = new FileOutputStream(pZipFile);
// fichero comprimido
zipos = new ZipOutputStream(fos);
ZipEntry zipEntry = new ZipEntry(pFile);
zipos.putNextEntry(zipEntry);
int len = 0;
// Comprimir
while ((len = fis.read(buffer, 0, TAMANO_BYTES)) != -1)
zipos.write(buffer, 0, len);
// volcar la memoria al disco
zipos.flush();
} catch (Exception e) {
throw e;
} finally {
// cerramos los files
zipos.close();
fis.close();
fos.close();
} // end try
} // end Comprimir

public void Descomprimir(String pZipFile, String pFile) throws Exception {
BufferedOutputStream bos = null;
FileInputStream fis = null;
ZipInputStream zipis = null;
FileOutputStream fos = null;

try {
fis = new FileInputStream(pZipFile);
zipis = new ZipInputStream(new BufferedInputStream(fis));
if (zipis.getNextEntry() != null) {
int len = 0;
byte[] buffer = new byte[TAMANO_BYTES];
fos = new FileOutputStream(pFile);
bos = new BufferedOutputStream(fos, TAMANO_BYTES);

while ((len = zipis.read(buffer, 0, TAMANO_BYTES)) != -1)
bos.write(buffer, 0, len);
bos.flush();
} else {
throw new Exception("El zip no contenia fichero alguno");
} // end if
} catch (Exception e) {
throw e;
} finally {
bos.close();
zipis.close();
fos.close();
fis.close();
} // end try
} // end Descomprimir

// ejemplo de uso
public static void main(String[] args) throws Exception {
try {
CompresorArchivos arch = new CompresorArchivos();
arch.Comprimir("devtroce.jpg", "devtroce.zip");
System.out.println("Comprimido!");
arch.Descomprimir("devtroce.zip", "new_devtroce.jpg");
System.out.println("Descomprimido!");
} catch (Exception e) {
e.printStackTrace();
}
}
}// end class

Última edición por ALBERTO802; 29/11/2013 a las 13:25
  #2 (permalink)  
Antiguo 29/11/2013, 15:00
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: ¿Qué me falla en este compresor/descompresor?

Hola:

Un NullPointerException suele ser fácil de resolver. ¿Puedes decirnos cual el exactamente la línea 47 de esorArchivos.java?

at javaapplication1.CompresorArchivos.Comprimir(Compr esorArchivos.java:47)

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 30/11/2013, 10:30
 
Fecha de Ingreso: mayo-2008
Mensajes: 37
Antigüedad: 15 años, 11 meses
Puntos: 5
Respuesta: ¿Qué me falla en este compresor/descompresor?

esa linea es:
zipos.close();
  #4 (permalink)  
Antiguo 30/11/2013, 11:11
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: ¿Qué me falla en este compresor/descompresor?

Pues el error, como dije, es fácil. zipos es null.

Posiblemente ha saltado una excepción en esta línea

zipos = new ZipOutputStream(fos);

haciendo que zipos sea null. Como el zipos.close() lo has metido en el finally, se ejecutará igualmente aunque haya saltado la excepción. Antes de cerrar zipo. comprueba que no es null.

Como la excepción que haya saltado en zipos = new ZipOutputStream(fos); también la capturas y lanzas e imprimes, aparte del NullPointer deberías ver antes otra excepción.

Se bueno.
__________________
Apuntes Java
Wiki de Programación

Etiquetas: falla, programa, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:38.