ZIP/GZIP Problemas?[RESOLVIDO]

Bom dia Gujeiros… estou como um problema me perseguindo a exatas 8 hrs… depois de muito debugar e utilizar o google e um artigo do guj… não consegui resolver meu problema e vim pedir a util ajuda de todos vocês…

O Problema…

Não consigo descomprimir um arquivo blob que recupero do banco de dados ORACLE.
Obs… a compressão utilizada no arquivo é .gzip…


public class UnZip {

	public static BLOB unZip(BLOB zipBlob){

		BLOB blob = null;
		ZipEntry ze = null;
		Connection connection = getConnection();
		try {
			
			blob = BLOB.createTemporary(connection, true, BLOB.DURATION_SESSION);
			blob.open(1);

			ZipInputStream z = new ZipInputStream(zipBlob.getStream());
			
			System.out.println(z.getNextEntry());
			while ((ze = z.getNextEntry()) != null) {
				ZipEntry entry = new ZipEntry(ze);
				System.out.println(entry.getSize() + entry.getName());
				for (int c = z.read(); c != -1; c = z.read()) {
					System.out.println(c);
					blob.setBinaryStream(c);
				}
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} 
		return blob;
	}

Desde já Agradeço a ajuda do Srs…

Olá!

Tente gerar um código MD5 do arquivo antes e depois de importar para ter certeza de que não está havendo alterações na estrutura do arquivo.
De qualquer forma, verifique se não há diferenças nas implementações de compactação e descompactação.

Espero ter ajudado…

Abraços!!

Valew… Eis a Solução

[code]public class UnZip {

public static BLOB unZip(BLOB zipBlob) {

	BLOB blob = null;
	Connection connection = getConnection();
	try {

		// Cria um Blob Temporarios
		blob = BLOB.createTemporary(connection, true, BLOB.DURATION_SESSION);
		// Abre o blob para recupera os arquivos à serem escritos.
		blob.open(BLOB.MODE_READWRITE);

		// Recupera o arquivo GZIP
		GZIPInputStream in = new GZIPInputStream(zipBlob.getBinaryStream());
		int count, i = 0;
		byte data[] = new byte[512];
		OutputStream os = blob.getBinaryOutputStream();
		// Escreve no arquivo.
		while ((count = in.read(data)) != -1) {
			os.write(data, 0, count);
			i++;
		}
		os.flush();
		os.close();

	} catch (SQLException e) {
		e.printStackTrace();
	} catch (IOException e) {
		e.printStackTrace();
	}

	return blob;
}[/code]