codigos:
package app;
import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;
import banco.dao.ContatoDAO;
public class TesteGzip {
public TesteGzip(){
//ContatoDAO c = new ContatoDAO();
}
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//System.out.println(new ContatoDAO().obterContatos().length);
ContatoDAO c = new ContatoDAO();
byte[] contatos = c.obterContatos();
System.out.println("size: " + contatos.length);
ByteArrayInputStream bais = new ByteArrayInputStream(contatos);
GZIPInputStream gzip = new GZIPInputStream(bais);
BufferedInputStream bis = new BufferedInputStream(gzip);
DataInputStream dis = new DataInputStream(bis);
int numReg = c.getNumRegistros();
System.out.println("numReg: " + numReg);
for(int i = 0; i < numReg; i++){
try {
System.out.println(dis.readInt());
System.out.println(dis.readUTF());
System.out.println(dis.readUTF());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
package banco.dao;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.zip.GZIPOutputStream;
import banco.BancoUtil;
public class ContatoDAO {
private int numRegistros = 0;
public byte[] obterContatos() {
byte[] contatos = new byte[200];
ByteArrayOutputStream baos = null;
BufferedOutputStream bos = null;
GZIPOutputStream gzip = null;
DataOutputStream dos = null;
BancoUtil b = new BancoUtil();
Connection con = b.getConexao();
try {
PreparedStatement ps = con
.prepareStatement("select t.id, t.nome, t.endereco from tbl_contato t");
ResultSet rs = ps.executeQuery();
baos = new ByteArrayOutputStream();
gzip = new GZIPOutputStream(baos);
bos = new BufferedOutputStream(gzip);
dos = new DataOutputStream(bos);
while (rs.next()) {
int id = rs.getInt("id");
String nome = rs.getString("nome");
String endereco = rs.getString("endereco");
System.out.println("id: " + id);
System.out.println("nome: " + nome);
System.out.println("endereco: " + endereco);
System.out.println();
dos.writeInt(id);
dos.writeUTF(nome);
dos.writeUTF(endereco);
this.numRegistros++;
}
baos.flush();
bos.flush();
gzip.flush();
dos.flush();
contatos = baos.toByteArray();
return contatos;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
baos.close();
bos.close();
gzip.close();
dos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("rox");
e.printStackTrace();
}
}
return contatos;
}
public int getNumRegistros() {
return numRegistros;
}
}
a saida:
id: 1
nome: chiquim
endereco: nova parnamirim
id: 2
nome: esbf
endereco: nova descoberta
id: 3
nome: gugu
endereco: alecrim
id: 4
nome: cbfs
endereco: candelaria
size: 10
numReg: 4
java.io.EOFException: Unexpected end of ZLIB input stream
at java.util.zip.InflaterInputStream.fill(InflaterInputStream.java:223)
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:141)
at java.util.zip.GZIPInputStream.read(GZIPInputStream.java:92)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
at java.io.DataInputStream.readInt(DataInputStream.java:370)
at app.TesteGzip.main(TesteGzip.java:43)
Alguém sabe oq está errado?