порядок файлов rubyzip

Я делаю архив для каталога, где у каждого файла есть имя из 3 цифр, начиная с 001 до 049. Мой код следующий:

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 файл).


person Ali Lown    schedule 09.06.2011    source источник
comment
Почему имеет значение, в каком порядке они распаковываются?   -  person Mark Thomas    schedule 11.06.2011
comment
Программа генерирует CBZ (файлы комиксов), и программа чтения чувствительна к порядку в zip-файле, а не к имени.   -  person Ali Lown    schedule 11.06.2011


Ответы (1)


Я отследил это до проблемы в библиотеке rubyzip, когда массив записей не сортировался до записи в центральный каталог, но unzip зависел от этого порядка.

Исправлено, и отправил запрос на перенос вверх по течению.

person Ali Lown    schedule 11.06.2011