Correção para criação manual de ZIP com diretórios internos que abre no Linux mas não abre no Windows

Posted About 7 years ago. Visible to the public.

Tive um problema pra gerar ZIPs com diretórios usando o código abaixo:

ZipOutputStream zipOut = new ZipOutputStream(out)
xmls.each { String conteudoXml ->
	adicionaXmlNoZip(zipOut, nomeArquivoXml, conteudoXml)
}
zipOut.close()

O zip abria 100% no ubuntu e no winrar, mas usando o leitor nativo do windows não abria.

A solução foi adicionar um zipOut.finish() antes do close.

ZipOutputStream zipOut = new ZipOutputStream(out)
xmls.each { String conteudoXml ->
	adicionaXmlNoZip(zipOut, nomeArquivoXml, conteudoXml)
}
zipOut.finish()
zipOut.close()

O ZipOutputStream escreve algumas coisas no arquivo quando chama esse finish, que o windows espera que existam.

Bruno Vieira
Last edit
About 7 years ago
Bruno Vieira
Posted by Bruno Vieira to ZeroGlosa (2017-04-24 20:53)