Ограничения GZipStream.net 3.5
От: -n1l-  
Дата: 06.08.13 16:24
Оценка:
В net 3.5 есть ограничения на использование GZipStream, а именно размер содержащихся в нем данных не должен превышать 4gb.
Мне нужно использовать .net 3.5 для упаковки и распаковки файлов превышающих этот объем используя GZipStream.
Я уже практически все перепробовал, и создание собственных буфферов и BufferedStream но никак не получается запаковать нужный мне файл.
Гуглинг тоже не помог. Что делать? Ответ "это не возможно" не ответ, так как это так сказать обучающая задача и решение должно быть.
Спасибо.
Re: Ограничения GZipStream.net 3.5
От: cvetkov  
Дата: 06.08.13 17:06
Оценка: 1 (1)
Только если разбить на куски, зазиповать куски и результат объединить.
Никакой стандартный разжимальщик это конечно не съест.
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Re[2]: Ограничения GZipStream.net 3.5
От: -n1l-  
Дата: 07.08.13 02:33
Оценка:
Здравствуйте, cvetkov, Вы писали:

C>Только если разбить на куски, зазиповать куски и результат объединить.

C>Никакой стандартный разжимальщик это конечно не съест.

А можете привести пример, как можно так запаковать, что бы программа своим процессом не занимала каждый из этих файлов и в итоге их можно было бы удалить?
Re: Ограничения GZipStream.net 3.5
От: Kubyshev Andrey  
Дата: 09.08.13 04:21
Оценка:
Я бы не парился и запускал бы какой нить внешний паковщик.
Re: Ограничения GZipStream.net 3.5
От: nikov США http://www.linkedin.com/in/nikov
Дата: 09.08.13 23:39
Оценка: +1
Здравствуйте, -n1l-, Вы писали:

N>Мне нужно использовать .net 3.5 для упаковки и распаковки файлов превышающих этот объем используя GZipStream.

N>Я уже практически все перепробовал, и создание собственных буфферов и BufferedStream но никак не получается запаковать нужный мне файл.
N>Гуглинг тоже не помог.

http://en.wikipedia.org/wiki/Gzip

...its file format also allows for multiple such streams to be concatenated (zipped files are simply decompressed concatenated as if they were originally one file[²])


То есть надо просто сжимать исходные данные кусками, не превышающими ограничения в 4GB, и записывать результаты в файл один за другим. В результате получится валидный gzip-архив, распаковка которого будет давать исходные данные.
Re[2]: Ограничения GZipStream.net 3.5
От: nikov США http://www.linkedin.com/in/nikov
Дата: 09.08.13 23:40
Оценка:
Здравствуйте, cvetkov, Вы писали:

C>Только если разбить на куски, зазиповать куски и результат объединить.

C>Никакой стандартный разжимальщик это конечно не съест.

На самом деле съест. Это фича формата gzip.
Re[3]: Ограничения GZipStream.net 3.5
От: nikov США http://www.linkedin.com/in/nikov
Дата: 09.08.13 23:42
Оценка:
Здравствуйте, -n1l-, Вы писали:

N>А можете привести пример, как можно так запаковать, что бы программа своим процессом не занимала каждый из этих файлов и в итоге их можно было бы удалить?


Не нужно создавать никаких промежуточных файлов.
Re[2]: Ограничения GZipStream.net 3.5
От: -n1l-  
Дата: 10.08.13 06:27
Оценка:
Здравствуйте, nikov, Вы писали:

N>То есть надо просто сжимать исходные данные кусками, не превышающими ограничения в 4GB, и записывать результаты в файл один за другим. В результате получится валидный gzip-архив, распаковка которого будет давать исходные данные.


Так я так их и сжимал, создавал буффер, записывал в него данные из файла, передавал его для записи gzipstream. И все было круто, пока файл, с которым работал gzip не становился больше 4GB.
Re[3]: Ограничения GZipStream.net 3.5
От: cvetkov  
Дата: 10.08.13 12:36
Оценка:
Здравствуйте, nikov, Вы писали:

C>>Только если разбить на куски, зазиповать куски и результат объединить.

C>>Никакой стандартный разжимальщик это конечно не съест.

N>На самом деле съест. Это фича формата gzip.


а как он узнает что новый кусок начался?
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Re[4]: Ограничения GZipStream.net 3.5
От: -n1l-  
Дата: 10.08.13 16:07
Оценка:
Здравствуйте, cvetkov, Вы писали:

C>Здравствуйте, nikov, Вы писали:


C>>>Только если разбить на куски, зазиповать куски и результат объединить.

C>>>Никакой стандартный разжимальщик это конечно не съест.

N>>На самом деле съест. Это фича формата gzip.


C>а как он узнает что новый кусок начался?


Вот кстати у меня как раз с этим проблема. Дело в том, что gzip определенным образом изменяет файл добавляя в него свои какие-то оповестительные знаки о начале и конце. Всеми возможными 7zipами я могу открыть файл, а вот gzipstream'ом не могу, так как он найдя первый знак оповещающий о конце первого куска заканчивает обработку потока.
Re[3]: Ограничения GZipStream.net 3.5
От: nikov США http://www.linkedin.com/in/nikov
Дата: 10.08.13 16:21
Оценка:
Здравствуйте, -n1l-, Вы писали:

N>Так я так их и сжимал, создавал буффер, записывал в него данные из файла, передавал его для записи gzipstream. И все было круто, пока файл, с которым работал gzip не становился больше 4GB.


Надо создавать отдельный инстанс GZipStream для каждого куска.
Re[5]: Ограничения GZipStream.net 3.5
От: nikov США http://www.linkedin.com/in/nikov
Дата: 10.08.13 16:40
Оценка:
Здравствуйте, -n1l-, Вы писали:

N>Вот кстати у меня как раз с этим проблема. Дело в том, что gzip определенным образом изменяет файл добавляя в него свои какие-то оповестительные знаки о начале и конце. Всеми возможными 7zipами я могу открыть файл, а вот gzipstream'ом не могу, так как он найдя первый знак оповещающий о конце первого куска заканчивает обработку потока.


GZipStream — это не полноценный архиватор, он предназначен для распаковки одного сжатого stream-а. Файл формата gzip может содержать несколько stream-ов подряд, соответственно, для каждого из них надо создавать отдельный инстанс GZipStream.

http://en.wikipedia.org/wiki/Gzip

...its file format also allows for multiple such streams to be concatenated (zipped files are simply decompressed concatenated as if they were originally one file[²])



http://tools.ietf.org/html/rfc1952

2.2. File format

A gzip file consists of a series of "members" (compressed data
sets). The format of each member is specified in the following
section. The members simply appear one after another in the file,
with no additional information before, between, or after them.

Re[4]: Ограничения GZipStream.net 3.5
От: -n1l-  
Дата: 10.08.13 20:55
Оценка: :)
Здравствуйте, nikov, Вы писали:

N>Здравствуйте, -n1l-, Вы писали:


N>>Так я так их и сжимал, создавал буффер, записывал в него данные из файла, передавал его для записи gzipstream. И все было круто, пока файл, с которым работал gzip не становился больше 4GB.


N>Надо создавать отдельный инстанс GZipStream для каждого куска.


И что с ним делать? Вы вообще его хоть раз пользовали на практике? Если файл больше 4гб, то плевать, все стримы перестают работать.
Если для каждого куска по стриму, то тогда получается много файлов.
В памяти куски хранить нельзя, он их не сживает. Хз почему, но когда я пробовал memorystream или bufferstream, он ничего не сжал.
Re[6]: Ограничения GZipStream.net 3.5
От: -n1l-  
Дата: 10.08.13 20:57
Оценка:
попробую, но мне кажется, что не получится.
Re[6]: Ограничения GZipStream.net 3.5
От: -n1l-  
Дата: 14.08.13 04:11
Оценка:
Здравствуйте, nikov, Вы писали:

N>Здравствуйте, -n1l-, Вы писали:


N>>Вот кстати у меня как раз с этим проблема. Дело в том, что gzip определенным образом изменяет файл добавляя в него свои какие-то оповестительные знаки о начале и конце. Всеми возможными 7zipами я могу открыть файл, а вот gzipstream'ом не могу, так как он найдя первый знак оповещающий о конце первого куска заканчивает обработку потока.


N>GZipStream — это не полноценный архиватор, он предназначен для распаковки одного сжатого stream-а. Файл формата gzip может содержать несколько stream-ов подряд, соответственно, для каждого из них надо создавать отдельный инстанс GZipStream.


N>http://en.wikipedia.org/wiki/Gzip


N>

N>...its file format also allows for multiple such streams to be concatenated (zipped files are simply decompressed concatenated as if they were originally one file[²])

N>

N>http://tools.ietf.org/html/rfc1952

N>

N>2.2. File format

N> A gzip file consists of a series of "members" (compressed data
N> sets). The format of each member is specified in the following
N> section. The members simply appear one after another in the file,
N> with no additional information before, between, or after them.


Скажите, я правильно понимаю, что есть разница в каком порядке мне записывать ужатые куски?
Re[6]: Ограничения GZipStream.net 3.5
От: -n1l-  
Дата: 14.08.13 05:28
Оценка:
Здравствуйте, nikov, Вы писали:


N>

N>2.2. File format

N> A gzip file consists of a series of "members" (compressed data
N> sets). The format of each member is specified in the following
N> section. The members simply appear one after another in the file,
N> with no additional information before, between, or after them.


Если я пытаюсь записать в файл второй gzipstream, то получаю ошибку, что файл закрыт от записи.
Re[6]: Ограничения GZipStream.net 3.5
От: -n1l-  
Дата: 14.08.13 08:38
Оценка:
В общем сконкатенировать gzipstream'ы в одном файле мне не представляется возможным.
Так что я вернусь к идее записи в несколько файлов.
Re[7]: Ограничения GZipStream.net 3.5
От: nikov США http://www.linkedin.com/in/nikov
Дата: 14.08.13 16:16
Оценка:
Здравствуйте, -n1l-, Вы писали:

N>Если я пытаюсь записать в файл второй gzipstream, то получаю ошибку, что файл закрыт от записи.

N>В общем сконкатенировать gzipstream'ы в одном файле мне не представляется возможным.

Надо написать свой Stream-прослойку, который будет держать файл открытым.
Нельзя вот так объявлять задачу нерешаемой при обнаружении малейшей трудности. Ты же программист, твоя задача — заставить инструменты делать то, что тебе нужно.
Re[7]: Ограничения GZipStream.net 3.5
От: nikov США http://www.linkedin.com/in/nikov
Дата: 14.08.13 16:17
Оценка:
Здравствуйте, -n1l-, Вы писали:

N>Скажите, я правильно понимаю, что есть разница в каком порядке мне записывать ужатые куски?


Конечно. В каком порядке запишешь — в таком они и прочитаются.
Re[7]: Ограничения GZipStream.net 3.5
От: vvlad.net  
Дата: 14.08.13 16:58
Оценка:
Здравствуйте, -n1l-, Вы писали:

N>В общем сконкатенировать gzipstream'ы в одном файле мне не представляется возможным.

N>Так что я вернусь к идее записи в несколько файлов.

 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.