我有一个非常大的文件,大约。 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 块的形式读取源文件,并将每个压缩块添加到输出流。根据您的环境将块大小调整为您的偏好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)