, GzipStream gzip gzip. (, , gzip winzip, , ). , , DotNetZip (http://dotnetzip.codeplex.com/).
, gzip, . , ID1, ID2 0x8 ( Deflate, . : http://www.gzip.org/zlib/rfc-gzip.html). , , gzip, (, , ), :
const int Id1 = 0x1F;
const int Id2 = 0x8B;
const int DeflateCompression = 0x8;
const int GzipFooterLength = 8;
const int MaxGzipFlag = 32;
public static bool IsHeaderCandidate(Stream stream)
{
byte[] header = new byte[10];
int bytesRead = stream.Read(header, 0, header.Length);
stream.Seek(-bytesRead, SeekOrigin.Current);
if (bytesRead < header.Length)
{
return false;
}
if (header[0] != Id1 || header[1] != Id2 || header[2] != DeflateCompression)
{
return false;
}
if (header[3] > MaxGzipFlag)
{
return false;
}
if (header[8] != 0x0 && header[8] != 0x2 && header[8] != 0x4)
{
return false;
}
return true;
}
, GzipStream , . MemoryStream, .
gzip, , ( ), gzip.