Ruby 压缩文件时丢失数据

Ruby 压缩文件时丢失数据,ruby,rubyzip,Ruby,Rubyzip,我在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)

我在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
需要“rubygems”
需要“查找”
需要“zip/zip”
output=“c:/temp/test.zip”
zos=Zip::ZipoutStream.new(输出)
path=“C:/temp/profile”
::Find.Find(路径)do |文件|
下一个if File.directory?(文件)
entry=file.sub(“#{path}/”,“”)
zos.put_下一个条目(条目)

zos我认为问题在于,您是以文本的形式读取文件,而不是以二进制文件的形式读取文件。这两种读取文件的基本模式在换行符、符号EOF等方面有所不同


尝试
File.open(File,'rb'){f | f.read}
而不是
File.read(File)

+1 Windows需要了解二进制文件。为了安全起见,“b”应该在那里。