.NET Framework Compression功能應(yīng)用技巧是什么,針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
公司主營業(yè)務(wù):成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出荊州免費做網(wǎng)站回饋大家。
.NET Framework能為開發(fā)人員提供一個合適的WEB應(yīng)用程序部署平臺,幫助他們輕松的完成各種程序的開發(fā)創(chuàng)建。以前做項目的時候,需要提供文件壓縮功能。當(dāng)時是使用了一個開源的類庫,名為ZipLib,使用起來還是很方便的。在.Net 2.0中,微軟在System.IO中新增了System.IO.Compression命名空間,.NET Framework Compression功能提供了壓縮功能的相關(guān)類GZipStream。
這個類的使用與一般的文件流使用差不多。我沒有分析其內(nèi)部實現(xiàn),但猜測應(yīng)該還是采用Decorator模式對Stream進(jìn)行了裝飾,從中應(yīng)用了.NET Framework Compression功能的算法。它通過Write()方法,將buffer里面的內(nèi)容寫到另一個文件流中,例如源文件為sourceFile,壓縮后的文件為targetFile,則方法為:
byte[] buffer = null;
FileStream sourceStream = null;
FileStream targetStream = null;
GZipStream compressedStream = null;
sourceStream = new FileStream
(sourceFile,FileMode.Open,FileAccess.
Read,FileShare.Read);
buffer = new byte[sourceStream.Length];
sourceStream.Read(buffer,0,buffer.Length);
targetStream = new FileStream
(targetFile,FileMode.OpenOrCreate,
FileAccess.Write);
//將CompressedStream指向targetStream;
compressedStream = new GZipStream
(targetStream,CompressionMode.
Compress,true);
compressStream.Write(buffer,0,
buffer.Length);
在使用GZipStream時,需要添加引用:
using System.IO; using System.IO.Compression;
.NET Framework Compression功能的解壓縮與前面的方法差不多,仍然使用GZipStream文件流:
// Read in the compressed source stream
sourceStream = new FileStream
( sourceFile, FileMode.Open );// Create a compression stream pointing
to the destiantion streamdecompressedStream = new GZipStream
( sourceStream, CompressionMode.
Decompress, true );// Read the footer to determine the
length of the destiantion filequartetBuffer = new byte[4];
int position = (int)sourceStream.Length - 4;
sourceStream.Position = position;
sourceStream.Read ( quartetBuffer, 0, 4 );
sourceStream.Position = 0;
int checkLength = BitConverter.ToInt32
( quartetBuffer, 0 );byte[] buffer = new byte[checkLength + 100];
int offset = 0;
int total = 0;
// Read the compressed data into the buffer
while ( true )
{
int bytesRead = decompressedStream.Read
( buffer, offset, 100 );if ( bytesRead == 0 ) break;
offset += bytesRead; total += bytesRead;
}
// Now write everything to the destination file
destinationStream = new FileStream
( destinationFile, FileMode.Create );destinationStream.Write ( buffer, 0, total );
// and flush everyhting to clean out the buffer
destinationStream.Flush ( );
關(guān)于.NET Framework Compression功能應(yīng)用技巧是什么問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。