重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
.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,则方法为:
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 ( );
关于.NET Framework Compression功能应用技巧是什么问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。