эквивалент java.util.zip.deflater в c # - PullRequest
3 голосов
/ 29 июня 2011

Кто-нибудь знает, как я могу добиться функциональности java Deflater.deflate () в .NET, чтобы это было понятно для метода java Infalter.inflate ()?

С уважением, Рафал

Ответы [ 4 ]

3 голосов
/ 08 сентября 2015

Класс ZlibStream внутри пакета DotNetZip (https://dotnetzip.codeplex.com/) эквивалентен java.util.zip.deflater.

Nuget: Install-Package DotNetZip

использование для байтового массива:

ZlibStream.CompressBuffer(dataBytesArray);

ZlibStream.UncompressBuffer(dataBytesArray);

он также имеет сжатие и декомпрессию String, и этот класс можно использовать с потоками точно так же, как .NET DefalteStream. Обратите внимание, что DeflateStream для DotNetZip не совпадает с Java, ZlibStream.

Дополнительная информация: DeflateStream of .NET не совместим с Deflate в Java. Фактически, Java использует Zlib и добавляет заголовок 2-6 байтов и контрольную сумму 4 байтов по умолчанию. Обрезание байтов (предлагается в некоторых статьяхвроде http://blogs.msdn.com/b/bclteam/archive/2007/05/16/system-io-compression-capabilities-kim-hamilton.aspx) будет работать, но я не рекомендую это делать, так как разбор длины заголовка может привести к ошибкам.

Я не предлагаю SharpZipLib, поскольку это чистый C #, и обычно производительность важна при работе со сжатиеми данные декомпрессии. Посмотрите на http://www.codeproject.com/Articles/434583/SharpZipLib-or-DotNetZip-Which-should-you-use

3 голосов
/ 30 июня 2011

Проверка System.IO.Compression пространство имен. Имеет DeflateStream . DeflateStream использует алгоритм сжатия Deflate, как и java.util.zip.deflater. Таким образом, вы можете сжать с помощью .NET и распаковать с помощью реализации Java и наоборот.

2 голосов
/ 29 июня 2011

Я использовал # zipLib . Это довольно просто.

Взято с их сайта:

# ziplib (SharpZipLib, ранее NZipLib) - это библиотека Zip, GZip, Tar и BZip2, полностью написанная на C # для платформы .NET. Он реализован как сборка (устанавливается в GAC) и, следовательно, может быть легко включен в другие проекты (на любом языке .NET). Создатель #ziplib выразился так: «Я перенес библиотеку zip на C #, потому что мне нужно сжатие gzip / zip, и я не хотел использовать libzip.dll или что-то вроде этого. . "

0 голосов
/ 29 июня 2011

Там же

Класс ZipPackage

или

GZipStream Class

, что может помочь, но я не знаю, насколько они просты в использовании или совместимы с Java (извините, не очень хороший ответ).

Есть хороший пост в блоге о zip-материалах: http://blogs.msdn.com/b/bclteam/archive/2010/06/28/working-with-zip-files-in-net.aspx

Или несколько открытых утилит zip для c #.

...