我想以这样一种方式包装普通文件,即从中读取(以块为单位)会产生压缩数据。
目前:
f = File.open(name)
while(string = f.read(@chunk_size) {
<do something>
}
我如何使用Zlib使f.read返回压缩数据的@chunk_size?
我找到了一个类似下面的示例,其中'str'可以使用,但它依赖于一次读取整个文件,这是不可能的,因为它可能是一个非常大的文件。
str = StringIO.new()
gz = Zlib::GzipWriter.new(str)
gz.write File.read('local-file.txt')
gz.close
str.string.read(@chunk_size)
感谢
更新:
这个hack似乎有效,但我确信它可以使用Zlib进行检测:
f = File.popen("/bin/gzip < #{name}" )
研究如何处理Zlib ..
答案 0 :(得分:0)
如果文件中的数据是单独的行,则可以使用each_line()迭代器方法
f = File.new('somefile.txt', 'r')
f.each_line do |line|
<The compression and storage part>
end
可能这可能已经发生在你身上了。