2012-04-06 11 views
1

ruby​​zipを使ってZipファイルにコメントを追加しようとしました。ruby​​zipでzipコメントを保存する

zf = Zip::ZipFile.open 'Archive.zip' 
zf.comment = "blah blah blah" 

ノー運とzf.closezf.commitを試してみました。私はドキュメントを読んでいるが、解決策を見つけることができない。

これまでに誰でもこれを行ったことはありますか?

+1

Rubyzipは、zipファイルの実際の内容が変更された場合にのみコメントを更新するので、唯一の回避策は以下の@ knutの回答です。私はちょうどこのバグを修正し、GitHubでプルリクエストを送信しました:https://github.com/aussiegeek/rubyzip/pull/41 –

答えて

1

アップグレード:これに基づき

require 'zip/zipfilesystem' 

zf = Zip::ZipFile.open 'Archive.zip' 
zf.comment = "CHANGED COMMENT" 
zf.get_output_stream("second.txt") { |f| f.puts "Hello from ZipFile" } 

zf.close 

を、あなたは次のことを行うことができます)、これはこのバグを修正します。

+0

ファンタスティック、a ... ahem ... gemのような作品!ありがとう – Jakanapes

1

私は次のコードで成功し、それを試してみました:私は、zipファイルを作成するには、少なくとも1つのドキュメントを追加

require 'zip/zipfilesystem' 

zf = Zip::ZipFile.open 'Archive.zip', 'w' 
zf.comment = "blah blah blah" 

zf.get_output_stream("first.txt") { |f| f.puts "Hello from ZipFile" } 
zf.close 

。内容がなければ、zipファイルはありません(コメントだけではの内容はではないようです)。

zipを作成しないで、zipファイルを変更したいとします。

また、これは動作しますが、それはまたのzipファイルに変更:本日発売RubyZip 0.9.7(へ

require 'zip/zipfilesystem' 

zf = Zip::ZipFile.open 'Archive.zip' 
zf.comment = "CHANGED COMMENT" 
zf.get_output_stream("second.txt") { |f| f.puts "Hello from ZipFile" } 
zf.commit #write the data and change the commen 
zf.remove("second.txt") #remove the data again - the comment changed 

zf.close 
+0

私がしたいことはまったく正確ではありませんが、それは動作します。宝石が更新されるまで、私はいつもコメントを追加したり削除してコメントを更新することができます。ありがとう! – Jakanapes

関連する問題