2
私は、Windows上でrubyzipを使用してディレクトリを圧縮しています。 アーカイブを解凍すると、ファイルの一部が元のサイズより小さくなります。ファイルを圧縮するときにデータが失われる
ジッピングはロスレス操作でなければならないので、なぜこれが起こっているのだろうかと思います。ここで
は、私が使用していたコードです:
require 'rubygems'
require 'find'
require 'zip/zip'
output = "c:/temp/test.zip"
zos = Zip::ZipOutputStream.new(output)
path = "C:/temp/profile"
::Find.find(path) do |file|
next if File.directory?(file)
entry = file.sub("#{path}/", '')
zos.put_next_entry(entry)
zos << File.read(file)
end
zos.close
問題を抱えている特定のファイルには、Firefoxのプロファイルからです。 cert8.dbとkey3.db
同じファイルでlinuxのjrubyで同じコードを実行すると、期待どおりに動作します - すべてのファイルは同じサイズです。
これはなぜWindowsで問題になるのですか?
+1 Windowsはバイナリファイルについて知っておく必要があります。安全のために、 "b"がそこにあるはずです。 –
ありがとうこれはトリックをした:) –