2011-12-29 9 views
0

普通のファイルを(チャンクで)読み込んで圧縮データを出力するようにしたいと思います。ruby​​でファイルストリームを即座に圧縮するにはどうすればいいですか?

現在:

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) 

おかげ

UPDATE:

このハックは動作しているようですが、私はそれがZlibのを計装することができ確信している:Zlibのをどうするかを検討してい

f = File.popen("/bin/gzip < #{name}") 

..

答えて

0

ファイル内のデータが別々の行にある場合は、each_line()イテレータmエコー

f = File.new('somefile.txt', 'r') 
f.each_line do |line| 
    <The compression and storage part> 
end 

おそらく、これはすでに発生している可能性があります。

+0

残念ながら、それはバイナリファイルなので、私は "each_line"がここで動作するとは思わない –

関連する問題