Fichiers vides ZIPTool

Bonjour,

@david

J’ai testé le code contenant le ZIPTool.build() pour insérer des fichiers dans un zip.

Voici mon code ci-après :

try (ByteArrayOutputStream out = new ByteArrayOutputStream()) {
			
	PrintTemplate ptexcel = getPrintTemplate("SioPublicationREO");
			
	ExcelPOITool xls = new ExcelPOITool(getGrant(), ptexcel.getDocument(getGrant()));
			
	Workbook wb = xls.getWorkbook();
			
	ByteArrayOutputStream bos = new ByteArrayOutputStream();
			
	try {
	    wb.write(bos);
	} finally {
	    bos.close();
	}
	
	StringBuilder xml = new StringBuilder(XMLTool.XML_HEADER);
	xml.append("<test>\n");
	xml.append("</test>\n");
			
	HashMap<String, byte[]> files = new HashMap<>();
	files.put("test.xls", bos.toByteArray());
	files.put("test.xml", xml.toString().getBytes());
	ZIPTool.build(out, files);
	out.close();
	return out.toByteArray();
}

Le problème est que les fichiers sont bien présents dans le ZIP, mais sont vides (ils ne contiennent que le titre du fichier).

Ai-je manqué quelque chose ?

Merci d’avance,

Benoît

Je pense que le bos utilisé après avoir été closé ne peut pas marcher. Le code devrait plutôt être du genre:

try (ByteArrayOutputStream bos = new ByteArrayOutputStream()) {
	PrintTemplate ptexcel = getPrintTemplate("SioPublicationREO");
	ExcelPOITool xls = new ExcelPOITool(getGrant(), ptexcel.getDocument(getGrant()));
	Workbook wb = xls.getWorkbook();
	wb.write(bos);

	StringBuilder xml = new StringBuilder(XMLTool.XML_HEADER);
	xml.append("<test>\n");
	xml.append("</test>\n");
			
	HashMap<String, byte[]> files = new HashMap<>();
	files.put("test.xls", bos.toByteArray());
	files.put("test.xml", xml.toString().getBytes());

	try (ByteArrayOutputStream out = new ByteArrayOutputStream()) {
		ZIPTool.build(out, files);
		return out.toByteArray();
	}
} catch (Exception e) {
	// ...
}

Merci pour ta réponse David, je viens de tester le code malheureusement celui ci n’a rien changé, les fichiers dans le Zip sont toujours vides. (les balises du xml ne sont pas présentes, le fichier ne contient que test.xml écrit à l’interieur)

Il y avait un bug dans l’une des nombreuses variantes de ZIPTool.build, et forcément c’est celle utilisée ici…

Bref c’est corrigé sur l’ensemble des branches (master/prerelease/release), ce sera disponible demain.

J’ai testé, tout fonctionne correctement, merci.