usa tutorial que para instalar index funciona elastic crear consultas como comandos java memory zip inputstream

java - tutorial - para que se usa elastic search



Crear un archivo zip en la memoria (2)

Estoy intentando comprimir un archivo (por ejemplo, foo.csv) y subirlo a un servidor. Tengo una versión funcional que crea una copia local y luego borra la copia local. ¿Cómo puedo comprimir un archivo para que pueda enviarlo sin escribir al disco duro y hacerlo solo en la memoria?


Como la API NIO.2, que se introdujo en Java SE 7, admite sistemas de archivos personalizados, puede intentar combinar un sistema de archivos en memoria como https://github.com/marschall/memoryfilesystem y el sistema de archivos Zip proporcionado por Oracle.

Nota: He escrito algunas clases de utilidad para trabajar con el sistema de archivos Zip.

La biblioteca es de código abierto y podría ayudarlo a comenzar.

Aquí está el tutorial: http://softsmithy.sourceforge.net/lib/0.4/docs/tutorial/nio-file/index.html

Puede descargar la biblioteca desde aquí: http://sourceforge.net/projects/softsmithy/files/softsmithy/v0.4/

O con Maven:

<dependency> <groupId>org.softsmithy.lib</groupId> <artifactId>softsmithy-lib-core</artifactId> <version>0.4</version> </dependency>


Utilice ByteArrayOutputStream con ZipOutputStream para realizar la tarea.

puede utilizar ZipEntry para especificar los archivos que se incluirán en el archivo zip.

Aquí hay un ejemplo del uso de las clases anteriores,

String s = "hello world"; ByteArrayOutputStream baos = new ByteArrayOutputStream(); try(ZipOutputStream zos = new ZipOutputStream(baos)) { /* File is not on the disk, test.txt indicates only the file name to be put into the zip */ ZipEntry entry = new ZipEntry("test.txt"); zos.putNextEntry(entry); zos.write(s.getBytes()); zos.closeEntry(); /* use more Entries to add more files and use closeEntry() to close each file entry */ } catch(IOException ioe) { ioe.printStackTrace(); }

ahora baos contiene su archivo zip como una stream