Nano Hash - криптовалюты, майнинг, программирование

Разделители файлов имени пути ZipEntry?

Записи ZIP хранят полное имя записи, потому что (я уверен в следующей части) ZIP-архив не организован как каталоги. Метаданные содержат информацию о том, как файлы должны храниться (внутри каталогов).

Если я создаю ZIP-файл в Windows, когда я распаковываю данные в другой ОС, например. Mac OS X файловая структура остается такой же, как и в Windows. Это потому, что распаковщик предназначен для этого, или это потому, что разделители файлов внутри ZIP стандартны?

Я спрашиваю об этом, потому что пытаюсь найти запись внутри ZIP-файла, используя имя заархивированного файла. Но какой разделитель файлов мне следует использовать, чтобы он работал в системах, отличных от Windows?

Я использую Java, и метод: .getName() из ZipEntry дает мне путь, используя разделитель файлов Windows \. Будет ли достаточно, если я использую разделитель java File.separator, чтобы он работал на другой ОС? Или мне придется пытаться найти свой файл с каждым возможным разделителем?

Упоминание о почетном правильном ответе

Ответ, данный @Eren Yilmaz, правильно описывает функциональность многих инструментов (или даже того, который вы можете закодировать самостоятельно). Но, учитывая, что стандарт .zip четко описывает, как это должно быть, правильный ответ пришлось обновить.


  • поэтому, когда вы распаковываете, вы не хотите распаковывать файл с абсолютным путем? 12.12.2012
  • нет, проблема в том, что пока я ищу файл, как мне установить разделители файлов на моем пути, чтобы он работал независимо от того, какая ОС является платформой для моего приложения... 12.12.2012

Ответы:


1

В спецификации файла .zip указано:

4.4.17.1 Имя файла с необязательным относительным путем. Сохраненный путь НЕ ДОЛЖЕН содержать букву диска или устройства или косую черту в начале. Все косые черты ДОЛЖНЫ быть прямыми косыми чертами '/', а не обратными косыми чертами '\' для совместимости с файловыми системами Amiga и UNIX и т. д. Если ввод был получен из стандартного ввода, поле имени файла отсутствует.

06.06.2017
  • Теперь вы являетесь владельцем правильного заголовка ответа с учетом цитирования документации. 01.07.2019

  • 2

    Разделитель файлов зависит от приложения, создающего ZIP-файл. Некоторые приложения используют системный разделитель файлов, тогда как некоторые используют «цивилизованную» косую черту «/». Итак, если вы создаете zip-файл, а затем используете его, вы можете просто использовать косую черту в качестве разделителя файлов. Если zip-файл создан где-то еще, то вам следует выяснить, какой разделитель использовался. Я не знаю простого способа, но вы можете использовать грубый метод и проверять оба типа разделителей по мере продвижения.

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

    10.05.2013
  • Если бы все приложения дословно следовали спецификациям, не было бы переполнения стека. На момент ответа (2013 г.) я получал смешанные разделители файлов в zip-файлах. Я больше не кодирую zip-файлы, надеюсь, что все приложения нашли истинный путь в наши дни. 14.08.2018
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..