# Моя невеличка допоміжна програма стискання... підтверджена версія

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

<!-- category -- mostlylucidcouk, Imported -->
Я вже розмістив на курсі помічника стиснення і майже відразу зрозумів, що він страждав від "маленької затримки" - отже, його так сильно змінили протягом місяців, що він був дійсно поганим!
В будь-якому разі, показана нижче є модифікованою версією того класу (на якій я також випробував мою нову схему форматування) як нагадування, це просто обгортка навколо [SharpZipLib](http://www.icsharpcode.net/OpenSource/SharpZipLib/Default.aspx).

використання системи;

за допомогою System.Text;

за допомогою System.IO;

за допомогою ICSapCode.SapZipLib;

Space SerializableJob. Compresession

{

публічний набір стискання

{

GZip,

BZip2,

Zip

}

Стискання публічного класу

{

published StriverType Provider = spressedType.GZip;

private Steam Stream Postream inputStream)

{

switch}CoresionProvider)

{

scoreType. BZip2:

return new ICSapCode.SapZipLib. BZip2. BZip2OutputStream} {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ >

specialType.GZip:

return new ICSapCode.SapZipLib.GZip.GZipOutPutStream} {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ >

caseType. Zip:

return new ICSapCode.SapZipLib. Zip. ZipOutPutStream} {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ >

типовий:

return new ICSapCode.SapZipLib.GZip.GZipOutPutStream} {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ >

}

}

privaal Steam InternetStream inputStream)

{

switch}CoresionProvider)

{

scoreType. BZip2:

return new ICSapCode.SapZipLib. BZip2. BZip2 InputStream}ТутСтрем);

specialType.GZip:

return new ICSapCode.SapZipLib.GZip.GZipInputStream} {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ >

caseType. Zip:

return new ICSapCode.SapZipLib. Zip. ZipInputStream} {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ >

типовий:

return new ICSapCode.SapZipLib.GZip.GZipInputStream} {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ >

}

}

публічний статичний байт[] Compress}байт[] bytesTompress)

{

MemoryStream ms = new MemoryStram}

Потік s = ВивідСтемс);

s. NW} collectionsToComres, 0, байтівTompress. Length);

s. close);

return ms. Toreath);

}

публічний статичний рядок Compress}рядковий рядок для доповнення)

{

byte[] стиснуті Data = CompressToByte}рядок ToCompares);

string strOut = Convert. ToBase64String} compressedData);

return strOut;

}

публічний статичний байт[] CompressToByte} Рядок для доповнення) Description of a condition. Do not translate key words (# V1S #, # V1 #,)

{

byte[] bytData = Encoding.Unicode. GetBytes}рядокToCompares);

return Compress}bytData);;

}

публічний рядок DeComples}рядковий рядок ToDepress)

{

string outString = string.Empty;

if (рядок ToDecком == null)

{

кинути новий ArgumentNullExce} "рядокToDepress" "Ви намагалися використовувати порожній рядок";

}

спробувати

{

byte[] inArr = Convert. FromBase64String}рядок ToDepress. Trims});

outString = System.Text.Encoding.Unicode.GetStringDeCompares});

}

patch (NullReferenceExcoding nEx)

{

return nEx.Message;

}

return outString;

}

публічний статичний байт[] DeCompares} specificate[] байтівToDepress)

{

byte[] writeData = новий байт[4096];

Потік s2 = InputStream ♪

MemoryStream outStream = new MemoryStream}

while} Так)

{

int розмір = s2. Readify}% 2, writeData.Length);

if}ize&gt;0)

{

outStream. Write=priteData, 0. size);

}

else

{

break;

}

}

s2.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ >

byte[] outArr = outStream. toream);

outStream. close});

returnArrt;

}

}

}
?>