Rubino zlib dati massiccia sgonfiare
-
26-09-2019 - |
Domanda
Sto cercando di utilizzare Zlib :: Deflate.deflate su un file enorme (4 concerti). Ci sono evidenti problemi nel fare questo, il primo dei quali è che non riesco a caricare l'intero file in memoria tutto in una volta. Zlib :: GzipWriter avrebbe funzionato, dal momento che funziona con i flussi, ma non è la compressione zlib. Tutte le idee?
Soluzione
Si potrebbe provare un'istanza di un flusso di Zlib :: Sgonfiare e alimentandola dati dal file di grandi dimensioni frammentario. Zlib :: :: Sgonfiare pretende deflate per fare questo genere di cose dietro le quinte.
Sarebbe simile a questa:
z = Zlib::Deflate.new
File.open "big_uncompressed_file" do |f|
File.open "big_compressed_file", "w" do |w|
f.each do |str|
w << z.deflate str, Zlib::SYNC_FLUSH
end
end
end
z.finish
z.close
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow