.NET Framework能为开发人员提供一个合适的WEB应用程序部署平台,帮助他们轻松的完成各种程序的开发创建。以前做项目的时候,需要提供文件压缩功能。当时是使用了一个开源的类库,名为ZipLib,使用起来还是很方便的。在.Net 2.0中,微软在System.IO中新增了System.IO.Compression命名空间,.NET Framework Compression功能提供了压缩功能的相关类GZipStream。 #t#
这个类的使用与一般的文件流使用差不多。我没有分析其内部实现,但猜测应该还是采用Decorator模式对Stream进行了装饰,从中应用了.NET Framework Compression功能的算法。它通过Write()方法,将buffer里面的内容写到另一个文件流中,例如源文件为sourceFile,压缩后的文件为targetFile,则方法为:
在使用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 stream- decompressedStream = new GZipStream
( sourceStream, CompressionMode.
Decompress, true );- // Read the footer to determine the
length of the destiantion file- quartetBuffer = 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 ( );
怎么样,通过对.NET Framework Compression功能的介绍,大家应该基本掌握了其中的应用技巧了吧。
新闻名称:闲谈.NETFrameworkCompression功能应用技巧
链接地址:http://www.mswzjz.cn/qtweb/news43/465743.html
攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能