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 ファイルを 16 進エディターで見ると、イメージが適切な順序で追加されていないことがわかりますがunzip、中央ディレクトリに存在する順序で抽出されていることがわかります (zip ファイルの最後のブロック)。

4

1 に答える 1

0

これを ruby​​zip ライブラリの問題に突き止めました。エントリ配列は、中央ディレクトリに書き込まれる前にソートされていませんでしたがunzip、この順序に依存していました。

修正し、プル リクエストをアップストリームに送信しました。

于 2011-06-11T21:47:21.230 に答える