Почему при распаковке zip-архива я получаю два файла с одинаковыми именами по одному и тому же пути?

Почему при распаковке zip-архива я получаю два файла с одинаковыми именами по одному и тому же пути?

Я извлекаю zip-архив (самораспаковывающийся, но это, вероятно, не имеет значения), и для нескольких файлов появляется диалоговое окно с вопросом, хочу ли я заменить уже извлеченный файл на файл, который вот-вот будет извлечен. На первый взгляд я не понял, как zip-архив может содержать один и тот же файл в одном и том же месте более одного раза. Затем я перешел к нужному файлу с помощью 7zip (или любого другого инструмента) и нашел это:

введите описание изображения здесь

Разница в номере блока. Что здесь на самом деле происходит?

решение1

Да, формат файла ZIP допускает несколько файлов с одинаковым именем. Файлы в ZIP на самом деле не находятся в каталогах, а просто имеют длинное имя, котороеопционально включает путь. И файлы добавляются в ZIP путем их эффективного объединения в один конец. Единственное место, где синонимы вызывают проблему в формате ZIP, — это каталог, где, предположительно, более поздний файл заменяет более ранний. Но когда извлекается целый ZIP-файл (в отличие от извлечения отдельных файлов), общий подход заключается в том, чтобы игнорировать каталог и просто извлекать файлы в том порядке, в котором они появляются в ZIP.

Конечно, на изображении показано содержимое ZIP-файла, а не каталога Windows.

решение2

Да. Файлы .zip МОГУТ содержать один и тот же файл дважды. Это можно сделать с помощью функции «добавить в архив» вашего инструмента zip. По умолчанию более поздний файл перезаписывает любой предыдущий файл(ы) при извлечении, так как это обычно желаемое поведение.

Кроме того, файлы, отличающиеся только регистром имени/пути, считаются идентичными при извлечении в файловую систему, нечувствительную к регистру (Windows или Mac OS).

решение3

Похоже, вы используете Windows, которая считает два файла с именами, отличающимися только регистром, одним и тем же именем.

Возможно, ваш архив был создан в файловой системе, чувствительной к регистру (такой как большинство Linux-систем), и два файла имели разный регистр (например: ENTRIES, Entries, entry).

Если посмотреть на вывод, файлы имеют одинаковый размер, одинаковую дату, одинаковую CRC, так что эти файлы идентичны, вы можете смело перезаписывать один другим. Возможно, кто-то скопировал его с другим регистром как локальную временную резервную копию во время работы с этими файлами. Номер блока означает, что они хранятся в разных местах в zip-файле, что должно быть очевидно.

решение4

Не может быть двух одинаковых имен файлов в одном и том же пути. Вы проверяли, скрывает ли ваша система расширения? Это может быть возможной разницей между ними. Возможно, один из них — резервный файл.

Связанный контент