# Mijn kleine compression-hulpmiddel...verbesserde versie

<datetime class="hidden">2004-04-06T11:31</datetime>

<!-- category -- mostlylucidcouk, Imported -->
Ik plaatste mijn compression-hulpgroep voor en realiseerde me bijna meteen dat het lijden had aan 'legacy lag' -, dus het was in de maanden zo veranderd dat het echt slecht was.
Hoe dan ook, dit is een aangepaste versie van die klas. Ik heb mijn nieuwe formateringsschema ook uitgeprobeerd op ) als herinnering. [SharpZipLib](http://www.icsharpcode.net/OpenSource/SharpZipLib/Default.aspx).

Met behulp van System;

Met behulp van het systeem.Text;

Met behulp van System.IO;

Met ICSharpCode.SharpZipLib;

Namespace SerializableJob.Compression

{

public enum CompressionType

{

GZip,

BZip2,

Zip

}

Publiekklasse-Compressie

{

Publiek statische CompressionType CompressionProvider = CompressTypeM SK1GZip;

Private statische stroom Uitgangstroom(Strom invoerstroom

{

switch(CompressionProvider)

{

Case CompressionType.BZip2:

terugvoer nieuwe ICSharpCode.SharpZipLib.BZipM SK2B Zip 2OutputStreamMSC4inputStream≥);

Case CompressionType.GZip:

terugvoer nieuwe ICSharpCode.SharpZipLib.GZipMSC2G ZipOutputStreamM SK3inputStream≥);

Case CompressionType.Zip:

terugvoer nieuwe ICSharpCode.SharpZipLib.ZipMSC2ZepOutputStreamM SK3inputStream≥);

default:

terugvoer nieuwe ICSharpCode.SharpZipLib.GZipMSC2G ZipOutputStreamM SK3inputStream≥);

}

}

Private statische stroom Invoerstroom(Strom invoerstrom)

{

switch(CompressionProvider)

{

Case CompressionType.BZip2:

terugvoer nieuwe ICSharpCode.SharpZipLib.BZipM SK2B Zip 2InputStreamMSC4inputStream≥);

Case CompressionType.GZip:

Gee terug nieuwe ICSharpCode.SharpZipLib.GZipMSC2G ZipInputStreamM SK3inputStream≥);

Case CompressionType.Zip:

terugvoer nieuwe ICSharpCode.SharpZipLib.ZipMSC2ZepInputStreamM SK3inputStream≥);

default:

Gee terug nieuwe ICSharpCode.SharpZipLib.GZipMSC2G ZipInputStreamM SK3inputStream≥); 

}

}

Publiek statische bijte[] Compress[] grepen om te komprimeren)

{

MemoryStream ms = nieuw MemoryStream();

Stroom s = Uitvoerstroom(msM SK2

s.Schreven(bytes om te komprimeren ,0,byten om te Komprimeren

s.Close();

Zullen ms.ToArray();

}

Publiek statische string Compress(string stringToCompress )

{

Byte[] gecomprimeerde gegevens = CompressToByteM SK2stringToCompress);

string strOut = Omvormen.ToBase 64StringM SK3compressedDataMSC4

Return strOut;

}

Publiek statische bijte[] CompressToByte(string stringToCompressM SK2

{

Byte[] bytData = Enkodering.UnicodeM SK3GetBytesMSC4stringToCompress

terugdrukken(bytData);;

}

public string DeCompress(string stringToDecompress )

{

String uitString = string.VleegM SK2

Als (stringToDecompress == null)

{

throw new ArgumentNullException("stringToDecompressM SK1Je probeerde een lege string te gebruiken");

}

Probeer

{

Byte[] inArr

outString = Stelsel.TeksM SK2Enkodering .UnicodeMSC4GetStringMスク5DeCompressMST6inArrMst7

}

Catch (NullReferenceException nEx)

{

Wend terug nEx.Message;

}

teruggaanString;

}

Publiek statische bijte[] Decompressen(byte[] grepenDecompressen)

{

Byte[] writeData = nieuw byte[4096];

Stroom s2 = Invoerstroom (nieuwe geheugenstroom

MemoryStream outStream = nieuw MemoryStream();

Terwijl(waar)

{

Int grootte = sM SK1Lezen(schrijfgegevensMska3schrijfdataM Ska4LongteMka5

als(grootte&gt;0)

{

outStream.Write(writeDataMSC2sizeM SK3

}

anders.

{

Breken;

}

}

s2.Close();

Byte[] outArr = outStreamM SK2ToArray();

outStream.Close();

TeruggaanArr;

}

}

}
?>