Cenário: Ao descompactar o arquivo é disparado uma ZipException dizendo que o valor esperado é um e o valor encontrado e outro “java.util.zip.ZipException: invalid entry size (expected 2503409672 but got 214363 bytes)”
Existe uma maneira de validar ou tratar o arquivo zip, para que não dispare essa exception?
Tem certeza de que o arquivo não está corrompido?
Posta sua implementação pra gente ver.
Oi staroski , naverdade o problema é justamente esse o arquivo está corrompido, usando uma ferramenta de descompactação eu consigo abrir e descompactar normalmente, e se eu compacta-lo novamente ele volta a ser um arquivo válido, o problema e que preciso validar se o zip está corrompido para não prosseguir no processo mas eu não encontrei uma solução até agora já que o erro ocorre sempre no momento de unzip.
o codigo que uso para a leitura:
private static void extractFile(ZipInputStream zipIn, String filePath) throws IOException {
BufferedOutputStream bos = null;
try {
bos = new BufferedOutputStream(new FileOutputStream(filePath));
byte[] bytesIn = new byte[1024];
int read = 0;
while ((read = zipIn.read(bytesIn)) != -1) {
bos.write(bytesIn, 0, read);
}
} finally {
close(bos);
}
}
Entendi, eu costumo usar um CRC32 para computar o checksum quando compacto e quando descompacto.
Mas realmente não sei dizer se vai resolver teu problema.
Se quiser fazer um teste, baixa essa classe do meu GitHub: