加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用Zlib压缩ruby中的大文件以获取gzip

发布时间:2020-12-17 03:41:15 所属栏目:百科 来源:网络整理
导读:我有一个非常大的文件,约. 2亿行数据. 我想用Zlib库压缩它,特别是使用Writer. 一次读取每一行似乎需要花费相当多的时间.有没有更好的方法来实现这一目标? 这就是我现在所拥有的: require 'zlib'Zlib::GzipWriter.open('compressed_file.gz') do |gz| File.
我有一个非常大的文件,约. 2亿行数据.

我想用Zlib库压缩它,特别是使用Writer.

一次读取每一行似乎需要花费相当多的时间.有没有更好的方法来实现这一目标?

这就是我现在所拥有的:

require 'zlib'

Zlib::GzipWriter.open('compressed_file.gz') do |gz|
 File.open(large_data_file).each do |line|
   gz.write line
 end
 gz.close
end

解决方法

您可以使用IO #read从文件中读取任意长度的块.

require 'zlib'

Zlib::GzipWriter.open('compressed_file.gz') do |gz|
 File.open(large_data_file) do |fp|
   while chunk = fp.read(16 * 1024) do
     gz.write chunk
   end
 end
 gz.close
end

这将以16kb块的形式读取源文件,并将每个压缩块添加到输出流中.根据您的环境,根据您的喜好调整块大小.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读