.Net2.0新增的对文件压缩代码

原创 2007年09月13日 16:10:00
System.IO.Compression 命名空间 
注意:此命名空间在 .NET Framework 
2.0 版中是新增的。 

System.IO.Compression 命名空间包含提供基本的流压缩和解压缩服务的类。

 压缩字符串

public static string ZipString(string unCompressedString)
        
{
           
            
byte[] bytData = System.Text.Encoding.UTF8.GetBytes(unCompressedString);
            MemoryStream ms 
= new MemoryStream();
            Stream s 
= new GZipStream(ms, CompressionMode.Compress);
            s.Write(bytData, 
0, bytData.Length);
            s.Close();
            
byte[] compressedData = (byte[])ms.ToArray();            
            
return System.Convert.ToBase64String(compressedData, 0, compressedData.Length);
        }


解压缩字符串
 

public static string UnzipString(string unCompressedString)
        
{
            System.Text.StringBuilder uncompressedString 
= new System.Text.StringBuilder();
            
byte[] writeData = new byte[4096];

            
byte[] bytData = System.Convert.FromBase64String(unCompressedString);
            
int totalLength = 0;
            
int size = 0;

            Stream s 
= new GZipStream(new MemoryStream(bytData), CompressionMode.Decompress);
            
while (true)
            
{
                size 
= s.Read(writeData, 0, writeData.Length);
                
if (size > 0)
                
{
                    totalLength 
+= size;
                    uncompressedString.Append(System.Text.Encoding.UTF8.GetString(writeData, 
0, size));
                }

                
else
                
{
                    
break;
                }

            }

            s.Close();
            
return uncompressedString.ToString();
        }

压缩文件

 
public static bool AddZip(string srcFilename, string zipFileName)
        
{
            
if (!File.Exists(srcFilename))
                
return false;
            
bool result;
            FileStream fs 
= null, output = null;
            GZipStream zipStream 
= null;
            
try
            
{
                fs 
= new FileStream(srcFilename, FileMode.Open, FileAccess.Read);                
                
byte[] buffer = new byte[fs.Length];
                fs.Read(buffer, 
0, buffer.Length);
                fs.Close();
                
if (!File.Exists(zipFileName))
                
{
                    output 
= File.Create(zipFileName);
                    zipStream 
= new GZipStream(output, CompressionMode.Compress);
                    zipStream.Write(buffer, 
0, buffer.Length);
                    result 
= true;
                }

                
else
                
{
                    result 
= false;
                }

            }

            
catch(Exception)
            
{
                result 
= false;
             }

            
finally
            
{
                
if (zipStream != null)
                
{
                    zipStream.Flush();
                    zipStream.Close();
                }

            }

            
return result;
        }


本文来自:http:
//www.goago.net

 

相关文章推荐

ASP.NET2.0中将文件上传到数据库

此问题经常被人问,本文列出将文字和图片上传到数据库的方法。包括Access数据库和SQL Server数据库。 Access数据库代码 protected void Bu...

在线文件管理系统(Asp.net2.0,Ajax,3层架构)

====================================================== 注:本文源代码点此下载 =============================...

asp.net2.0导出pdf文件完美解决方案

PDF简介:PDF(Portable Document Format)文件格式是Adobe公司开发的电子文件格式。这种文件格式与操作系统平台无关,也就是说,PDF文件不管是在Windows,Unix还...

ASP.NET2.0文件图片处理

1.最简单的单文件上传(没花头) 2.多文件上传 3.客户端检查上传文件类型(以上传图片为例) 4.服务器端检查上传文件类型(以上传图片为例) 5.服务器端检查上传文件类型(可以检测真正文...

asp.net2.0实现文件上传,控制上传文件大小,类型

1、建立Default.aspx文件和文件夹upLoad 2、Default.aspx代码如下: 无标题页 onClick="Button1_...

ASP.NET2.0中Web应用程序样式切换(App_Themes)

主题是Microsoft ASP.NET 2.0 提供给开发人员的一项新增功能。          在 Asp.NET 2.0 出现以前, 给网站提供更换主题功能是一项繁重的工作,鉴于每切换一套...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:.Net2.0新增的对文件压缩代码
举报原因:
原因补充:

(最多只允许输入30个字)