# Ο μικρός μου βοηθός συμπίεσης... βελτιωμένη έκδοση

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

<!-- category -- mostlylucidcouk, Imported -->
Έχω δημοσιεύσει την τάξη βοήθειας συμπίεσης μου πριν και συνειδητοποίησα σχεδόν αμέσως ότι υποφέρει από ' ανακάλυψη lag' ΜSK2 έτσι ώστε το γεγονός ότι η ' είχε αλλάξει τόσο πολύ κατά τους μήνες που ήταν πραγματικά κακόM SK4
Εν πάση περιπτώσει, το , που παρουσιάζεται παρακάτω είναι μια τροποποιημένη έκδοση αυτής της κατηγορίας (για την οποία μου άρεσε η 'βει επίσης δοκιμάστηκε το νέο σχήμα διαμόρφωσης μου σεΜSK3 ως υπενθύμιση για,βεί ότι η ΜSK5βουν μόνο ένα απλό γκρίζο γύρω [ΣΑΡΚΙΠΛΙΒ](http://www.icsharpcode.net/OpenSource/SharpZipLib/Default.aspx).

Χρησιμοποιώντας το σύστημα;

Χρησιμοποιώντας το Σύστημα.Text;

Χρησιμοποιώντας το σύστημα.IO;

Χρησιμοποιώντας το ICSharpCode.SharpZipLib;

Ετικέτες ΑλληλογραφίαΕργασία.Compression

{

Δημόσιο Enum CompressionType

{

GZip,

ΕΠΙΧΕΙΡΕΥΣΗ ΠΡΟΤΑΣΕΙΣ

Ζίπ

}

Δημόσιας τάξης συμπίεση

{

Δημόσια στατική συμπίεσηType CompressionΠρομηθευτής =CompressionTypesM SK1GZip;

Ιδιωτικό στατικό Stream OutputStream(Stream inputStream<)

{

Σύνδεση(CompressionProvider)

{

Τύπος συμπίεσηςType.BZip2:

επιστροφή νέου ICSharpΚώδικα.SharpZipLib.BZipMK2BzipΜSK3OutputStreamM SK4input Stream

Τύπος συμπίεσηςType.GZip:

επιστροφή νέου ICSharpCode.SharpZipLib.GZipMK2GzipOutputStreamMk3inputStram

Τύπος συμπίεσηςType.Zip:

επιστροφή νέου ICSharpCode.SharpZipLib.ZipM SK2ZIPOutputStreamMK3inputStramΜSK4

ΕΠΙΧΕΙΡΕΥΣΗ ΠΡΟΤΑΣΕΙΣ

επιστροφή νέου ICSharpCode.SharpZipLib.GZipMK2GzipOutputStreamMk3inputStram

}

}

Ιδιωτικό στατικό Stream InputStream(Stream inputStream<)

{

Σύνδεση(CompressionProvider)

{

Τύπος συμπίεσηςType.BZip2:

επιστροφή νέου ICSharpΚώδικα.SharpZipLib.BZipMK2BzipΜSK3InputStreamM SK4input Stream);

Τύπος συμπίεσηςType.GZip:

επιστροφή νέου ICSharpCode.SharpZipLib.GZipMK2GzipInputStreamMk3inputStram

Τύπος συμπίεσηςType.Zip:

επιστροφή νέου ICSharpCode.SharpZipLib.ZipM SK2ZIPInputStreamMK3inputStramΜSK4

ΕΠΙΧΕΙΡΕΥΣΗ ΠΡΟΤΑΣΕΙΣ

επιστροφή νέου ICSharpCode.SharpZipLib.GZipMK2GzipInputStreamMk3inputStram 

}

}

Δημόσιο στατικό byte[] CompressΜSK1byte[] bytesToCompressΜSK1

{

MemoryStream ms = ανακοινώθηκε το νέο Memory Stream ΜSK1 ανακοινωθεί

Stream s =OutputStream(ΜSK2

s.ΓράψτεΜSK1bytesToCompress,0, bytesToComPressM SK3ΠολιότηταMK4

.ΚλειδώστεΜSK1

επιστροφή ms.ToArrayΜSK1

}

Δημόσιες στατικές γραμμές Compress(string stringToCompressΜSK1

{

Μπίτι[] καταπιεσμένα Δεδομένα ΜSK1 CompressToByte (stringToCompress);

string strOut = ΜετατρέψτεΜSK1ToBase64StringM SK3compressedΔιαγραφή δεδομένωνMK4

ΕΠΙΣΤΡΟΦΗ ΣΧΕΔΙΟΓΡΑΦΙΚΑ

}

Δημόσιο στατικό byte[] CompressToByte (string stringToCompress)

{

Μπίτι[] bytData ΜSK1 Κρυπτογράφηση.UnicodeM SK3GetBytesMSKA4stringToCompressMK5

Επιστροφή Compress(bytΤα δεδομέναΜSK1

}

δημόσιες γραμμές DeCompress(string stringToDecompressΜSK1

{

στυλ outString = ΣτυλΜSK1Ελεύθερο;

Εάν (stringToDecompress ΜSK1 μηδέν ΜSK2

{

ρίξτε νέα ArgumentNullException("stringToDecompress","Προσπαθήσατε να χρησιμοποιήσετε μια κενή γραμμήM SK2

}

Δοκιμάστε

{

Μπίτι[] inArr ΜSK1 Μετατρέψτε ΜSK2FromBase ΜΚ3String ΜΣΚ4stringToDecompress ΜСК5TrimΜΣΚ6

outString = ΣυστήματαΜSK1Text.ΚωδικοποίησηM SK3UnicodeMK4GetStringMSKA5DeCompressMKA6ArrMKK7

}

(NullReferenceΕξαίρεση nExΜSK1

{

Επιστροφή nEx.Μήνυμα;

}

ΕΠΙΣΤΡΟΦΗ ΣΧΕΔΙΟΓΡΑΦΙΚΑ

}

Δημόσιο στατικό byte[] DeCompress (byte[] bytesToDecompressΜSK1

{

Μπίτι[] writeΗμερομηνία ΜSK1 νέα byte[4096];

Stream s2 ΜSK1 InputStream ΜSK2 MemoryStream< (bytesToDecompress ));

MemoryStream outStream = ανακοινώθηκε το νέο Memory Stream(); ανακοινωθεί

Ενώ το ( διατηρεί την )

{

Μέγεθος int = s2.Διαβάστε περισσότερα(writeDataMK3writData<.Περί μήκουςΜSK5

Εάν το ( αναφέρει&gt;0)

{

outStream.ΓράψτεΜSK1writeΔιαγραφή δεδομένων,0,σχεδιάστεM SK3

}

Άλλο

{

ΕΠΙΧΕΙΡΕΥΣΗ ΣΤΗΝ ΚΟΙΝΩΝΙΑ

}

}

2.ΚλειδώστεΜSK1

Μπίτι[] outArr ΜSK1 outStreamM SK2ToArray();

Επόμενο άρθροΕπεξεργαστείτε το ();

ΕΠΙΣΤΡΟΦΗ ΠΡΟΣΕΥΘΜΙΖΟΝΤΑΙ

}

}

}
?>