Pergunta

Estou tentando usar o zlib :: deflate.deflate em um arquivo maciço (4 shows). Existem problemas óbvios em fazer isso, o primeiro dos quais não consigo carregar o arquivo inteiro na memória de uma só vez. Zlib :: Gzipwriter funcionaria, pois funciona com fluxos, mas não é a compactação do ZLIB. Alguma ideia?

Foi útil?

Solução

Você pode tentar instanciar um zlib :: deflate o fluxo e alimentando os dados de TI do seu grande arquivo. Zlib :: Deflate :: Deflate pretende fazer esse tipo de coisa nos bastidores.

Seria algo assim:

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

Ruby Zlib Docs

Notas sobre bandeiras Zlib Flush

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top