[ruby-list:43072] Re: Zip圧縮について

From: Kobayashi Noritada <nori1@...>
Date: 2006-12-20 09:41:13 UTC
List: ruby-list #43072
小林です。

From: "Shunsuke Takenaka"
Subject: [ruby-list:43070] Zip圧縮について
Date: Wed, 20 Dec 2006 16:47:38 +0900

> RubyのライブラリのZlib、RubyGemのRubyZipの両方を試したのですが、
> 私たちの仕様にあう形式に圧縮データを作れなくて困っております。
> 何か良い方法がありましたら、お教え願えますでしょうか。
> 
> やりたいこと
> ・適当なテキストファイルをzip形式で圧縮する。
> ・圧縮したデータはファイルとして保存するのではなく、メモリ上で作成して、クライアント側に送る。

.zip という拡張子を使っているところを見ると、使いたいのは Windows など
で一般に使われている所謂 zip (pkzip) ですよね?

http://ja.wikipedia.org/wiki/ZIP_(%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88)

> ■RubyZip
> ZipOutputStream.open('data.zip') {
>           |zos|
>           ze = zos.put_next_entry 'server_resp.txt'
>           zos.puts response.body
> }
> 
> server_resp.txtというファイルを圧縮し、data.zipと言うアーカイブを作成します。
> ですが、このdata.zipをファイルとして保存するのではなく、メモリ上で作成したい。

こちらは pkzip を扱うライブラリのようなのでよいのですが (といっても使っ
たことがなく調べる余裕もないのできちんとコメントできませんが)、

> ■Zlibにて
> output = StringIO.new
> gz = Zlib::GzipWriter.new(output)    
> gz.write(response.body)
> gz.close

こちらは、zip は zip でも UNIX 系 OS で広く使われている GNU Zip すなわ
ち gzip (拡張子: .gz) の方なので、期待されるフォーマットにはならないと
思います (別に Windows で使えないことはありませんが)。

http://ja.wikipedia.org/wiki/GZIP

-- 
|:  Noritada KOBAYASHI
|:  Dept. of General Systems Studies,
|:  Graduate School of Arts and Sciences, Univ. of Tokyo
|:  E-mail: nori1@dolphin.c.u-tokyo.ac.jp (preferable)
|:          nori@esa.c.u-tokyo.ac.jp
|:  Key fingerprint = AB26 9533 81DA 997B 3C06  4380 19BB ADA0 695C 9F53

In This Thread

Prev Next