Sto provando a comprimere un file (ad esempio foo.csv) e caricarlo su un server. Ho una versione funzionante che crea una copia locale e quindi elimina la copia locale. Come faccio a comprimere un file in modo da poterlo inviare senza scrivere sul disco rigido e farlo semplicemente in memoria?Creare un file zip in memoria
risposta
Utilizzare ByteArrayOutputStream con ZipOutputStream per completare l'operazione.
è possibile utilizzare ZipEntry per specificare i file da includere nel file zip.
Ecco un esempio di utilizzo delle classi di cui sopra,
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();
}
ora baos
contiene il file zip come stream
Come l'API NIO.2, che era introdurre nel Java SE 7, supporti i file system personalizzati si potrebbe provare a combinare un filesystem in-memory come https://github.com/marschall/memoryfilesystem e il file system Zip fornito da Oracle.
Nota: ho scritto alcune classi di utilità per lavorare con il file system Zip.
La libreria è Open Source e potrebbe essere utile per iniziare.
Ecco il tutorial: http://softsmithy.sourceforge.net/lib/0.4/docs/tutorial/nio-file/index.html
È possibile scaricare la libreria da qui: 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>
- 1. Estrarre un file zip in memoria?
- 2. Come creare un file zip in Java
- 3. Python, scrivere in memoria zip su file
- 4. Scaricare un file zip ed estrarlo in memoria usando Python3
- 5. Creazione di file zip da un flusso di memoria C#
- 6. Creazione di un file zip all'interno della memoria BLOB BLU
- 7. Come creare un file zip di più file di immagine
- 8. seek() un file all'interno di un file zip in Python senza passarlo alla memoria
- 9. Modo per ottenere un elenco di file da un zip scaricato senza caricare l'intero file zip in memoria?
- 10. In Linux, zip più directory in un unico file zip
- 11. In memoria scarica ed estrai archivio zip
- 12. Come creare un file ZIP per un elenco di "file virtuali" e inviarlo a httpservletresponse
- 13. decomprimere un file .zip
- 14. Come creare e riempire un file ZIP usando ASP.NET?
- 15. Creare un file zip usando la classe PHP ZipArchive senza scrivere il file sul disco?
- 16. Codice Python per creare un file zip crittografato con password?
- 17. Leggere un file zip all'interno del file zip
- 18. Creare un archivio ZIP con Maven
- 19. scrivere un XSSFWorkbook in un file zip
- 20. Ionic Zip: creazione file zip da byte []
- 21. Comando 7-Zip per creare ed estrarre un file ZIP protetto da password su Windows?
- 22. Non in grado di creare un archivio Zip in Gradle
- 23. come creare un nuovo file java.io.File in memoria?
- 24. Come posso creare un'immagine PIL da un file in memoria?
- 25. Estrarre un file da una stringa ZIP
- 26. Libreria zip C in grado di creare file zip protetti da password su Windows?
- 27. archivio php zip memoria, ram e dimensione massima del file
- 28. Come crittografare un file .zip?
- 29. Come posso creare un archivio Zip in Perl?
- 30. sottodirectory in un file ZIP utilizzando ZipOutputStream
Assicurarsi di chiamare il close() - metodo in una fine blocco, o meglio: utilizzare la gestione automatica delle risorse di Java 7. – Puce
@Puce: intendevo mostrare solo uno snippet, ma dopo il tuo commento ho sentito che aggiungere un codice più strutturato sarebbe positivo. Grazie per il commento .. :) –
@BlackPanther potresti elaborare più/mostrare una versione dettagliata per se il file di origine esiste in una directory locale. –