zoukankan      html  css  js  c++  java
  • .NET 2.0 的压缩功能

    在.net 1.1中我们要实现压缩这一功能,一般都是用open source的SharpZipLib 或者调用J#类库。
    现在在.net 2.0中增加了压缩功能,名字空间为 using 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;
            }
  • 相关阅读:
    Sprite Kit编程指南(1)-深入Sprite Kit
    无线点菜系统01(需求分析)
    【体系结构】转移预测器性能的定量评价
    数据挖掘的常见方法
    hdu1711
    poj3358数论(欧拉定理)
    爬虫提取非结构化数据
    pyDes 实现 Python 版的 DES 对称加密/解密--转
    python2 'str' object has no attribute 'decode'
    vba传递参数类型错误
  • 原文地址:https://www.cnblogs.com/jzywh/p/dotnet2compression.html
Copyright © 2011-2022 走看看