Estou a editar ficheiros ODT e como processo faço unzip do ficheiro, edito o xml como pretendo e volto a fazer zip.
Unzip e editar o que quero está tudo ok, mas quando faço zip perco bytes, se fizer manualmente está tudo ok, mas com o código perco, alguem pode dar uma ajuda.
Exemplo, o ficheiro original tem 69427 bytes, o zip fica com 67379 bytes. (não fazendo nenhum alteração, so mesmo unzip -> zip)
public static final void zipDirectory( File directoria, File zip ) throws IOException {
ZipOutputStream zos = new ZipOutputStream( new FileOutputStream( zip ) );
zip( directoria, directoria, zos );
zos.close();
}
private static final void zip(File directoria, File base, ZipOutputStream zos) throws IOException {
File[] files = directory.listFiles();
byte[] buffer = new byte[TAMANHO_FICH_ORIGINAL];
int read = 0;
for (int i = 0, n = files.length; i < n; i++) {
if (files[i].isDirectory()) {
zip(files[i], base, zos);
} else {
FileInputStream in = new FileInputStream(files[i]);
ZipEntry entry = new ZipEntry(files[i].getPath().substring(base.getPath().length() + 1));
zos.putNextEntry(entry);
while (-1 != (read = in.read(buffer))) {
zos.write(buffer, 0, read);
}
in.close();
}
}
}
.
.