我爱Aspx >> C#.Net >> 用.NET 2.0压缩/解压功能处理大型数据.NET框架2.0中的一个新名称空间是System.IO.Compression。这个新名称空间提供了两个数据压缩类:DeflateStream和GZipStream。这两个压缩类都支持无损压缩和解压,其设计目的是为了处理流式数据的压缩和解压问题。
压缩是减少数据大小的有效办法。例如,如果你有巨大量的数据存储在你的SQL数据库中,那么如果你在把这些数据保存到一个表之前压缩一下,你就可以节省大量的磁盘空间。而且,既然现在你把更小块的数据保存到你的数据库中,花费在磁盘I/O方面的操作将会大大减少。压缩的缺点是,它要求你的机器进行另外的处理(因此需要另外的处理时间),并且,在你决定把压缩应用于你的程序之前,你需要计算这一部分时间。
压缩在你需要在网上传送数据的情况中是极其有用的,特别是对于非常慢且代价昂贵的网络,例如GPRS连接。在这种情况中,使用压缩能够极大地缩小数据尺寸并且减少整个通讯耗费。Web服务是另一个领域-此时,使用压缩能提供巨大的优点,因为XML数据能被高度压缩。
但是一旦你认为程序的性能代价值得使用压缩,那么你将需要深入地理解.NET 2.0的两个新的压缩类,而这正是我想在本文中所阐述的。
创建示例应用程序在本文中,我将构建一个示例应用程序来展示压缩的使用。该应用程序允许你压缩文件,包括普通文本文件。然后,你能够把该示例中的代码重用于你自己的应用程序中。
首先,使用Visual Studio 2005创建一个新的Windows应用程序并且使用下列控件来填充默认的表单(见图1):
图1.填充表单:使用所有显示的控件填充默认的Form1。 |
· GroupBox控件
· RadioButton控件
· TextBox控件
· Button控件
· Label控件
切换到Form1的code-behind并且导入下列名称空间:
| Imports System.IOImports System.IO.Compression |
在你开始使用压缩类前,理解其工作原理是非常重要的。这些压缩类从一个字节数组中读取数据,压缩它并且把结果存储到一个流对象中。对于解压来说,解压存储到一个流对象中的数据,然后把它存储到另一个流对象中。
首先,定义Compress()函数,它有两个参数:algo和data。第一个参数指定使用哪种算法(GZip或Deflate);第二个参数是一个包含要压缩的数据的字节数组。一个内存流对象将被用来存储压缩数据。一旦压缩完成,你需要计算压缩比,这是用压缩的数据的大小除以解压数据的大小计算的。
Ҷƪл˵?
ASP.NET 2.0服务器控件之复合控件..[04-30]
ASP.NET2.0数据操作之母板页和站..[04-30]
ASP.NET 2.0 ObjectDataSource控..[04-30]
ASP.NET 2.0服务器控件之复合控件..[04-30]
ASP.NET 2.0服务器控件之复合控件..[04-30]
ASP.NET 2.0服务器控件之实现验证..[04-30]
ASP.NET 2.0服务器控件之验证控件..[04-30]
C#+ASP.NET 2.0定制复合组件之基..[04-30]
C#+ASP.NET 2.0定制复合组件之高..[04-30]
ASP.NET 2.0中实现模板中的数据绑..[04-30]
ASP.NET 2.0服务器控件之复合控件..[04-30]
ASP.NET2.0数据操作之母板页和站..[04-30]
ASP.NET 2.0 ObjectDataSource控..[04-30]
ASP.NET 2.0服务器控件之复合控件..[04-30]
ASP.NET 2.0服务器控件之复合控件..[04-30]
实例解析C++/CLI线程之多任务[04-30]
实例解析C++/CLI线程之多任务[04-30]
实例解析C++/CLI线程之多任务[04-30]
ASP.NET 2.0服务器控件之实现验证..[04-30]
ASP.NET 2.0服务器控件之验证控件..[04-30]