中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

.NET Framework Compression功能應用技巧是什么

發布時間:2022-01-11 10:47:04 來源:億速云 閱讀:118 作者:柒染 欄目:編程語言

.NET Framework Compression功能應用技巧是什么,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

.NET Framework能為開發人員提供一個合適的WEB應用程序部署平臺,幫助他們輕松的完成各種程序的開發創建。以前做項目的時候,需要提供文件壓縮功能。當時是使用了一個開源的類庫,名為ZipLib,使用起來還是很方便的。在.Net 2.0中,微軟在System.IO中新增了System.IO.Compression命名空間,.NET Framework Compression功能提供了壓縮功能的相關類GZipStream。

這個類的使用與一般的文件流使用差不多。我沒有分析其內部實現,但猜測應該還是采用Decorator模式對Stream進行了裝飾,從中應用了.NET Framework Compression功能的算法。它通過Write()方法,將buffer里面的內容寫到另一個文件流中,例如源文件為sourceFile,壓縮后的文件為targetFile,則方法為:

  1. byte[] buffer = null;   

  2. FileStream sourceStream = null;   

  3. FileStream targetStream = null;   

  4. GZipStream compressedStream = null;   

  5. sourceStream = new FileStream
    (sourceFile,FileMode.Open,FileAccess.
    Read,FileShare.Read);   

  6. buffer = new byte[sourceStream.Length];   

  7. sourceStream.Read(buffer,0,buffer.Length);   

  8. targetStream = new FileStream
    (targetFile,FileMode.OpenOrCreate,
    FileAccess.Write);   

  9. //將CompressedStream指向targetStream;   

  10. compressedStream = new GZipStream
    (targetStream,CompressionMode.
    Compress,true);  

  11. compressStream.Write(buffer,0,
    buffer.Length); 

在使用GZipStream時,需要添加引用:

using System.IO; using System.IO.Compression;

.NET Framework Compression功能的解壓縮與前面的方法差不多,仍然使用GZipStream文件流:

  1. // Read in the compressed source stream   

  2. sourceStream = new FileStream 
    ( sourceFile, FileMode.Open );   

  3. // Create a compression stream pointing 
    to the destiantion stream   

  4. decompressedStream = new GZipStream 
    ( sourceStream, CompressionMode.
    Decompress, true );   

  5. // Read the footer to determine the 
    length of the destiantion file   

  6. quartetBuffer = new byte[4];   

  7. int position = (int)sourceStream.Length - 4;  

  8. sourceStream.Position = position;   

  9. sourceStream.Read ( quartetBuffer, 0, 4 );  

  10. sourceStream.Position = 0;   

  11. int checkLength = BitConverter.ToInt32 
    ( quartetBuffer, 0 );   

  12. byte[] buffer = new byte[checkLength + 100];   

  13. int offset = 0;   

  14. int total = 0;   

  15. // Read the compressed data into the buffer   

  16. while ( true )   

  17. {   

  18. int bytesRead = decompressedStream.Read 
    ( buffer, offset, 100 );   

  19. if ( bytesRead == 0 ) break;   

  20. offset += bytesRead; total += bytesRead;   

  21. }   

  22. // Now write everything to the destination file  

  23. destinationStream = new FileStream 
    ( destinationFile, FileMode.Create );   

  24. destinationStream.Write ( buffer, 0, total );   

  25. // and flush everyhting to clean out the buffer  

  26. destinationStream.Flush ( ); 

關于.NET Framework Compression功能應用技巧是什么問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

马公市| 寿光市| 佛冈县| 虹口区| 寻甸| 格尔木市| 湖南省| 财经| 获嘉县| 广西| 永胜县| 廊坊市| 绥化市| 宁陕县| 昭通市| 德州市| 平昌县| 根河市| 安庆市| 叙永县| 铜梁县| 体育| 龙州县| 招远市| 东安县| 昂仁县| 白河县| 灵寿县| 霞浦县| 邮箱| 甘泉县| 正阳县| 武清区| 古丈县| 金秀| 新营市| 茶陵县| 宝应县| 应城市| 大荔县| 平阳县|