压缩文件时丢失数据

我在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上的问题?     
已邀请:
我认为问题是你正在以文本形式阅读文件,而不是二进制文件。这两种读取文件的基本模式在换行符,符号EOF等方面有所不同。 试试
File.open(file,'rb'){|f|f.read}
而不是
File.read(file)
。     

要回复问题请先登录注册