|
9 / 9 / 2
Регистрация: 17.03.2014
Сообщений: 30
|
||||||
GZipStream22.11.2014, 22:05. Показов 2244. Ответов 5
Метки нет (Все метки)
Суть вопроса вот в чем, есть данный код, который сжимает по одиночке все файлы, которые находятся в папке, создавая для каждого файла свой архив, как сделать так, чтобы сжимало всю папку целиком, в 1 фаил.
0
|
||||||
| 22.11.2014, 22:05 | |
|
Ответы с готовыми решениями:
5
Создать поток сжатия GZipStream, и перенести данные из открытого файла в поток GZipStream
Магические числа GZipStream |
|
Администратор
|
|
| 23.11.2014, 11:16 | |
|
Alexnwb, если у тебя .NET 4.5, то используй ZipFile.CreateFromDirectory. В предыдущих версиях придется использовать внешнюю библиотеку. Например, SharpZipLib.
0
|
|
|
9 / 9 / 2
Регистрация: 17.03.2014
Сообщений: 30
|
|
| 23.11.2014, 18:37 [ТС] | |
|
OwenGlendower, спасибо, на сколько мне известно, я должен передать ссылку на массив, чтобы разбить по байтово все что находится в папке, а потом это все в 1 архив закинуть, примерно как-то так
0
|
|
|
Администратор
|
|
| 23.11.2014, 19:07 | |
|
Alexnwb, ты хочешь сделать собственный формат архива?
0
|
|
|
9 / 9 / 2
Регистрация: 17.03.2014
Сообщений: 30
|
|
| 23.11.2014, 21:06 [ТС] | |
|
OwenGlendower, да, именно, но незнаю как это реализовать
0
|
|
|
Администратор
|
||||||||||||
| 23.11.2014, 23:36 | ||||||||||||
Сообщение было отмечено Alexnwb как решение
Решение
Alexnwb, нет проблем. Чтобы распаковать архив нам нужно знать сколько файлов в архиве, их имена и длину. Делаем такую структуру файла: создаем новый файл, пишем 4 нуля в начале, затем записываем друг за другом сжатые файлы. Во время этого процесса заполняем такой класс:
При распаковке мы читаем (с помощью BinaryReader) смещение типа int и двигаем позицию файла туда. Теперь снова читаем int с кол-вом файлов в архиве и создаем List<ArchiveEntry>(N) или ArchiveEntry[N]. Далее читаем в том же порядке в котором записывали поля класса ArchiveEntry и добавляем его в коллекцию. Это мы получили наш список файлов. Т.к. для каждого файла мы запомнили его длину, то мы можем прочитать из входного потока нужное кол-во байтов. Метод CopyTo() уже не получится использовать т.к. он копирует поток целиком. Тем не менее написать простой цикл не составит труда. Таким образом мы будем двигаться по нашему архиву и распаковывать файлы один за другим. Если понадобится распаковать не все файлы, то зная длину запакованных данных каждого файла мы сможем пропускать их пока не дойдем до данных нужного файла. P.S. Только сейчас обратил внимание на код функции Compress:
1
|
||||||||||||
| 23.11.2014, 23:36 | |
|
Помогаю со студенческими работами здесь
6
Распаковка с использованием GZipStream
GZipStream архивация частей файла GZipStream: Размер архива больше оригинала
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|