0

我正在为一个目录创建一个存档,其中每个文件都有一个从 001 到 049 的 3 位数字的名称。我的代码如下:

Zip::ZipFile.open(File.join(out, dir+".cbz"), Zip::ZipFile::CREATE) {
  |zipfile|
  Dir.glob(File.join(dir, "*")).sort.each {
    |file|
    puts "add file #{file}"
    zipfile.add(File.basename(file),file)
  }
}

添加文件时,我验证了puts它们是按数字升序添加的。但是当我尝试用 解压它们时zip,我发现它们是按随机顺序解压的(例如 045、002、...)。

如何确保它们按数字顺序解压?

编辑:使用十六进制编辑器查看生成的 zip 文件显示图像以不合理的顺序添加,但它们是unzip按照它们在中央目录中出现的顺序提取的(在 zip 文件末尾的块)。

4

1 回答 1

0

我已经将此追溯到 ruby​​zip 库中的一个问题,即条目数组在写入中央目录之前没有被排序,而是unzip依赖于这个顺序。

已修复,并向上游发送了拉取请求。

于 2011-06-11T21:47:21.230 回答