# Minun pieni suppression-apuvälineeni...muunnettu versio

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

<!-- category -- mostlylucidcouk, Imported -->
Olen lähettänyt kompressioneuvontakurssini aikaisemmin ja huomasin lähes välittömästi, että se kärsii 'perinnön viivästyksestäM SK1 - joten se' on muuttunut niin paljon kuukausien aikana, että on ollut todella huonoaMSC4
Joka tapauksessa, jäljempänä esitelty , on tämän luokan muutettu versio. Olen myös yrittänyt muokata uutta malliani ) muistutuksena. [SharpZipLib](http://www.icsharpcode.net/OpenSource/SharpZipLib/Default.aspx).

käyttäen järjestelmää;

käyttäen järjestelmää.Text

käyttäen järjestelmää.IO

käyttäen ICSharpCode.SharpZipLib;

namespace SerializableJob.Compression

{

public enum KompressionType

{

GZip,

BZip2,

Zip-järjestelmä

}

julkisen luokan kompressio

{

julkinen statinen KompressionType CompressionProvider = CompressionTypeM SK1GZip;

yksityinen statinen kaasuputkikaasuputk*(*kaasuputkinputk)*

{

switch(CompressionProvider)

{

tapa CompressionType.BZip2:

palauttaa uusi ICSharpCode.SharpZipLib.BZipM SK2B Zip 2OutputStream

tapa CompressionType.GZip:

palauttaa uusi ICSharpCode.SharpZipLib.GZipMSC2G ZipOutputStreamM SK3inputStream≥);

tapa CompressionType.Zip:

palauttaa uusi ICSharpCode.SharpZipLib.ZipM SK2ZepOutputStreamMSC3inputStream≥);

default:

palauttaa uusi ICSharpCode.SharpZipLib.GZipMSC2G ZipOutputStreamM SK3inputStream≥);

}

}

yksityisen statisen kaasuputken tuloputken(kaasuputkin tuloputkin

{

switch(CompressionProvider)

{

tapa CompressionType.BZip2:

palauttaa uusi ICSharpCode

tapa CompressionType.GZip:

palauttaa uusi ICSharpCode.SharpZipLib.GZipMSC2G ZipInputStreamM SK3inputStream≥);

tapa CompressionType.Zip:

palauttaa uusi ICSharpCode.SharpZipLib.ZipM SK2ZIPInputStream

default:

palauttaa uusi ICSharpCode.SharpZipLib.GZipMSC2G ZipInputStreamM SK3inputStream≥); 

}

}

julkinen statinen sivu[] Kompresso[] BytesToCompress

{

MemoryStream ms = uusi MemoryStream();

Stream s = OutputStream(msM SK2

s. kirjoittaa(bytesCompress-mahdollisuuteen ,0, bytesCompression-mahdoltaanM SK3Length

s.CloseM SK1

palauttaa ms.ToArray();

}

julkinen statinen string Compress(string stringToCompress )

{

Bytti[]kompressoituja tietoja

string StrOut = Konvertoida .Base-alueelle64StringMSC3kompressedDataM SK4

palauttaa strOut;

}

julkinen statinen sivu[] KompressToByte

{

Bytti[] bytData

palauttaa Kompress(bytData);;

}

julkinen string DeCompress(string stringToDecompress )

{

string outString = string

jos (stringToDecompress

{

throw new ArgumentNullException("stringToDecompress"," Yritin käyttää tyhjää stringiäM SK2

}

yrittää

{

Bytti[] inArr = SiirtääM SK2Välipohjasta64TähdetMSC4TyhdetDecompress-komprimointiinMST5Trim\());

outString = Järjestelmä

}

pyynti (NullReferenceException nExM SK1

{

palauttaa nEx.Message;

}

palaa ulosString;

}

julkinen statinen sivu[] DeCompress[] BytesToDecompress

{

Bytti[] writeData = uusi Byte[4096];

Stream s2 = InputStream(new MemoryStream(bytesToDecompressM SK4

MemoryStream outStream = uusi MemoryStream();

kun(trueM SK1

{

int-koko = s2.ReadM SK2writeDataMSC3w writeData .LengthMST5

jos(koko&gt;0)

{

outStream.WriteM SK1writeData ,0,size);

}

muu

{

murtaminen;

}

}

s2.CloseM SK1

Bytti[] outArr

outStream.CloseM SK1

palaa ulosArr;

}

}

}
?>