Defina o nível de compactação ao gerar um arquivo zip usando rubyzip
-
20-09-2019 - |
Pergunta
Eu tenho um programa Ruby que abre uma árvore de diretório de arquivos XML usando o Rubyzip gema. Meu problema é que o arquivo está começando a ser pesado e eu gostaria de aumentar o nível de compressão, pois o tempo de compressão não é um problema.
Eu não consegui encontrar no Documentação de Rubyzip Uma maneira de especificar o nível de compactação para o arquivo zip criado.
Alguém sabe como mudar essa configuração? Existe outra biblioteca Ruby que permite especificar o nível de compressão?
Solução
Aqui está o código que criei olhando para o Rubyzip Internal.
level = Zlib::BEST_COMPRESSION
Zip::ZipOutputStream.open(zip_file) do |zip|
Dir.glob("**/*") do |filename|
entry = Zip::ZipEntry.new("", filename)
entry.gather_fileinfo_from_srcpath(filename)
zip.put_next_entry(entry, nil, nil, Zip::ZipEntry::DEFLATED, level)
entry.get_input_stream { |is| IOExtras.copy_stream(zip, is) }
end
end
Outras dicas
Você provavelmente terá melhor tração chamando o programa 'ZIP' ou o que não fazer o zipping.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow