不是gzip格式(Zlib::GzipFile::Error)-在Ruby中解压缩gzip文件时

不是gzip格式(Zlib::GzipFile::Error)-在Ruby中解压缩gzip文件时,ruby,zlib,Ruby,Zlib,我正试图用下面的Ruby代码解压一个文件 File.open("file_compressed.gz") do |compressed| File.open("file_decomp","w") do |decompressed| gz = Zlib::GzipReader.new(compressed) result = gz.read decompressed.write(result) gz.close end end 但我有以下错误- not

我正试图用下面的Ruby代码解压一个文件

File.open("file_compressed.gz") do |compressed|
  File.open("file_decomp","w") do |decompressed|
    gz = Zlib::GzipReader.new(compressed)
    result = gz.read
    decompressed.write(result)
    gz.close
  end
end
但我有以下错误-

 not in gzip format (Zlib::GzipFile::Error)
 ./features/support/abc/abc_file.rb:44:in `initialize'
 incorrect header check (Zlib::DataError)
  ./features/support/abc/abc_file.rb:69:in `inflate'
当我在Mac上使用gzip命令解压缩同一个文件时,它生成了正确的未压缩输出。 对于下面的命令,我可以看到-

 $file file_compressed.gz
 file_compressed.gz: gzip compressed data, from FAT filesystem (MS-DOS, OS/2, NT)
在使用Zlib创建压缩文件时,是否需要放置任何头数据?因为当我使用充气方法而不是GzipReader时,我会得到以下错误-

 not in gzip format (Zlib::GzipFile::Error)
 ./features/support/abc/abc_file.rb:44:in `initialize'
 incorrect header check (Zlib::DataError)
  ./features/support/abc/abc_file.rb:69:in `inflate'

如果您所在的平台不使用
LF
分隔符,但使用
CR
+
LF
,则可能需要以二进制模式打开文件以读取:

File.open("file_compressed.gz", "rb") do |compressed|
  # ...
end
这也应该避免将输入流解释为8位二进制以外的任何内容

请确保使用
“wb”
作为标记以相同的方式打开输出文件