Упаковка файлов для чтения без необходимости извлечения

В моем текущем проекте я имею дело с огромным количеством файлов (более десятков миллиардов файлов с небольшим объемом от 1 до 30 КБ) в качестве ресурсов, копирование которых для моего клиента является трудоемкой работой. я ищу механизм упаковки, который может помочь мне упаковать каждую 1000 или 10000 из них в один файл, что приводит к большей скорости копирования, потому что в этом случае я имею дело с гораздо меньшим количеством файлов; а также чтение их из моего приложения не должно нуждаться в извлечении, а также в сжатии, когда я пишу или изменяю их (из-за производительности и характера приложения, которое распределяется, и ресурсы распределяются между клиентами), я искал и я знать о следующих библиотеках ZIP:

  • SharpZipLib
  • DotNetZip
  • System.IO.Packaging

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

как к считыванию данных из--а-зип-файла-без имеющих к разархивируют-на-всего-файл

контента внутри-зип-файл

Кто-нибудь есть идеи или решения по этому вопросу?

Кстати, я пишу код на C#, и проект основан на Windows Form.

1 ответ

Решение

Я бы сделал свой собственный формат пакета. С GZipStream или что-то еще. Для каждого файла вы сжимаете их с помощью GZipStream, после того как вы получите байтовые значения и вам нужно создать заголовок в вашем формате пакета, который будет содержать для каждого файла (имя, начальная позиция и длина). С этими данными в вашем заголовке, это, вероятно, будет в начале вашего пакета. Вы можете получить информацию для нужного вам файла, и после того, как вы просто попытаетесь найти позицию сжатых данных, вы получите байтовый массив указанной длины.

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

Другие вопросы по тегам