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?

È stato utile?

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

rubino zlib docs

note sulle bandiere zlib filo

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top