2011-06-09 105 views
0

我正在为一个目录,其中每个文件都有开始从001到049我的代码3位数字命名的存档如下:ruby​​zip文件顺序

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)压缩文件的末尾)。

+0

它为什么不管他们解什么顺序? – 2011-06-10 23:42:38

+0

该程序正在生成CBZ(漫画书文件),读者程序对zip文件中的顺序非常敏感,而不是名称。 – 2011-06-11 19:23:32

回答

0

我已经将它跟踪到rubyzip库中的一个问题,其中条目数组在写入中央目录之前未被排序,但unzip依赖于此顺序。

固定,sent a pull request upstream.