Ο μικρός μου βοηθός συμπίεσης... βελτιωμένη έκδοση
Έχω δημοσιεύσει την τάξη βοήθειας συμπίεσης μου πριν και συνειδητοποίησα σχεδόν αμέσως ότι υποφέρει από ' ανακάλυψη lag' ΜSK2 έτσι ώστε το γεγονός ότι η ' είχε αλλάξει τόσο πολύ κατά τους μήνες που ήταν πραγματικά κακόM SK4 Εν πάση περιπτώσει, το , που παρουσιάζεται παρακάτω είναι μια τροποποιημένη έκδοση αυτής της κατηγορίας (για την οποία μου άρεσε η 'βει επίσης δοκιμάστηκε το νέο σχήμα διαμόρφωσης μου σεΜSK3 ως υπενθύμιση για,βεί ότι η ΜSK5βουν μόνο ένα απλό γκρίζο γύρω ΣΑΡΚΙΠΛΙΒ.
Χρησιμοποιώντας το σύστημα;
Χρησιμοποιώντας το Σύστημα.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
Εάν το ( αναφέρει>0)
{
outStream.ΓράψτεΜSK1writeΔιαγραφή δεδομένων,0,σχεδιάστεM SK3
}
Άλλο
{
ΕΠΙΧΕΙΡΕΥΣΗ ΣΤΗΝ ΚΟΙΝΩΝΙΑ
}
}
2.ΚλειδώστεΜSK1
Μπίτι[] outArr ΜSK1 outStreamM SK2ToArray();
Επόμενο άρθροΕπεξεργαστείτε το ();
ΕΠΙΣΤΡΟΦΗ ΠΡΟΣΕΥΘΜΙΖΟΝΤΑΙ
}
}
} ?>