01/12/2024

AppDatos

Portal de Información – Rutificador

[Java] Comprimir un archivo y enviarlo por Servlet Response

Generar un archivo en base a un objeto o clase para luego transformarlo en un archivo CSV, el cual luego es comprimido y enviado en el Response de un Servlet.



public static ByteArrayOutputStream exportarCSV( Obj obj ) {

ByteArrayOutputStream csvfout = new ByteArrayOutputStream();

try {
	List resultadoArchivo = obj.getList();

	for ( String linea : resultadoArchivo ) {
			int pos = linea.indexOf( '\n' );
			csvfout.write( linea.getBytes() );
		if ( pos < 0 ) {
			csvfout.write( linea.getBytes() );
		}
	}
	
	csvfout.flush();

}catch ( IOException e ) {
	e.printStackTrace();
}
	return csvfout;
}

String csvName = "salida.csv"; 
ByteArrayOutputStream csvfout = ViewHelper.exportarCSV(obj);

ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(response.getOutputStream(), DEFAULT_BUFFER_SIZE));
ZipEntry e = new ZipEntry(csvName);
out.putNextEntry(e);
byte[] data = csvfout.toByteArray();
out.write(data, 0, data.length);
out.closeEntry();
out.close();




Tomar un archivo CSV desde un directorio, para luego comprimirlo y enviarlo en el Response de un Servlet.




String csvName = "salida.csv"; 

ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(response.getOutputStream(), DEFAULT_BUFFER_SIZE));
ZipEntry e = new ZipEntry(csvName);
out.putNextEntry(e);
byte[] data = Files.readAllBytes("C:\archivo");;
out.write(data, 0, data.length);
out.closeEntry();
out.close();




Deja una respuesta