Java - ¿Qué me falla en este compresor/descompresor?

   
Vista:

¿Qué me falla en este compresor/descompresor?

Publicado por Alberto (4 intervenciones) el 29/11/2013 20:17:24
Estoy intentando hacer un compresor en java, y al ejecutarlo me devuelve estos errores:

java.lang.NullPointerException
at javaapplication1.CompresorArchivos.Comprimir(CompresorArchivos.java:47)
at javaapplication1.CompresorArchivos.main(CompresorArchivos.java:88)

Me estoy volviendo loco, en que falla el programa? como lo arreglo? Lo pongo aqui delante entero, muchas gracias por leerme:

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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
/*
 * 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
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

¿Qué me falla en este compresor/descompresor?

Publicado por Tom (914 intervenciones) el 30/11/2013 13:04:41
Pues lo más probable es que alguno de los ficheros que abres no exista, o que no puedas crear el comprimido.
Lo normal en estos casos es que hagas debug del programita.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar