Min lilla komprimering hjälpare ... förbättrad version (Svenska (Swedish))

Min lilla komprimering hjälpare ... förbättrad version

Tuesday, 06 April 2004

//

2 minute read

Jag postade min komprimeringshjälp tidigare och insåg nästan omedelbart att det led av "legacy lag" - så det hade ändrats så mycket under månaderna att det var riktigt dåligt! Hur som helst, presenteras nedan är en modifierad version av den klassen (som jag också har provat min nya formatering schema på) som en påminnelse, det är bara en enkel omslag runt SharpZipLib Ordförande.

Användning av systemet.

Användning av System.Text.

Användning av System.IO.

Använda ICSharpCode.SharpZipLib.

namnrymd SerializableJob.Compression

{

Public enum kompressionType

{

GZip, jag vet inte vad jag ska göra.

BZip2 och BZip2

Skift

}

offentlig klasskompression

{

offentlig statisk kompressionType CompressionProvider = KompressionType.GZip,

privat statisk strömutmatningStream (Stream inputStream)

{

omkopplare(tryckgivare)

{

FallkompressionType.BZip2:

Återlämna ny ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream(inputStream).

FallkompressionType.GZip:

Återlämna ny ICSharpCode.SharpZipLib.GZip.GZipOutputStream(inputStream).

FallkompressionType.Zip:

Återlämna ny ICSharpCode.SharpZipLib.Zip.Zip OutputStream(inputStream).

förval:

Återlämna ny ICSharpCode.SharpZipLib.GZip.GZipOutputStream(inputStream).

}

}

privat statisk ströminmatningStream (Stream inputStream)

{

omkopplare(tryckgivare)

{

FallkompressionType.BZip2:

Återlämna ny ICSharpCode.SharpZipLib.BZip2.BZip2InputStream(inputStream).

FallkompressionType.GZip:

Återlämna ny ICSharpCode.SharpZipLib.GZip.GZipInputStream(inputStream).

FallkompressionType.Zip:

Återlämna ny ICSharpCode.SharpZipLib.Zip.ZipInputStream(inputStream).

förval:

Återlämna ny ICSharpCode.SharpZipLib.GZip.GZipInputStream(inputStream).

}

}

offentlig statisk byte[Tryck( byte)[) BytesToCompress)

{

MemoryStream ms = nytt MemoryStream();

Ström S = UtgångStream(ms).

s.Skriv(bytesToCompress,0, bytesToCompress.Längd).

  1. close(),

Återlämna ms.ToArray().

}

offentlig statisk sträng Kompress( strängsträngsträngToCompress)

{

byte[] komprimerade data = CompressToByte(strängToCompress);

sträng strout = Konvertera.ToBase64String(komprimerad data);

Återgångsrader.

}

offentlig statisk byte[] KomprimeraTobyte(strängsträngsträngToCompress)

{

byte[] bytData = Kodning.Unicode.GetBytes(stringToCompress);

Återlämningskompress (byteData).

}

offentlig sträng DeCompress( strängsträngsträngToDecompress)

{

strängutsträckning = sträng.Empty;

om (stringToDecompress == null)

{

Kasta nya ArgumentNullException("stringToDecompress","Du försökte använda en tom sträng");

}

försök

{

byte[] inArr = Konvertera.FromBase64String(stringToDecompress.Trim());

utString = System.Text.Encoding.Unicode.GetString(DeCompress(inArr));

}

Fångst (NullReferenceException nEx)

{

Återlämna nEx. meddelande.

}

Återgå till utkanten av linjen.

}

offentlig statisk byte[] DeCompress (byte)[] bytesToDecompress)

{

byte[] writeData = ny byte[4096];

Ström S2 = InputStream (nytt MemoryStream(bytesToDecompress));

MemoryStream outStream = nytt MemoryStream();

medan (sann)

{

Int storlek = s2.Read(writeData,0writeData.Längd);

om (storlek>0)

{

outStream.Write(writeData,0size);

}

annat

{

Brott.

}

}

s2.Stäng().

byte[] outArr = outStream.ToArray();

utStream.Close();

Återlämna utAr.

}

}

} ?>

Finding related posts...
logo

© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.