`
Ethan.Lu
  • 浏览: 6481 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

在.Net Compact Framework 3.5中使用GZip

    博客分类:
  • .Net
阅读更多

在.Net Compact Framework 3.5中将数据加压

using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.IO.Compression;

namespace MRSDataSync.Helper
{
    public class GZip
    {
        private Encoding encode = Encoding.UTF8;

        public byte[] zipData(byte[] inputData)
        {
            if (inputData == null)
            {
                throw new ArgumentNullException("input data cannot be null.");
            }

            byte[] result;

            #region MS compressor
            MemoryStream mso = null;
            try
            {
                mso = new MemoryStream();
                GZipStream gzipStream = null;
                try
                {
                    gzipStream = new GZipStream(mso, CompressionMode.Compress, false);
                    gzipStream.Write(inputData, 0, inputData.Length);
                }
                catch (Exception ex)
                {
                    System.Diagnostics.Debug.WriteLine(ex.Message + "\r\n" + ex.StackTrace);
                    throw;
                }
                finally
                {
                    if (gzipStream != null)
                    {
                        gzipStream.Close();
                        gzipStream.Dispose();
                        gzipStream = null;
                    }
                }

                result = mso.ToArray();
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message + "\r\n" + ex.StackTrace);
                throw;
            }
            finally
            {
                if (mso != null)
                {
                    mso.Close();
                    mso.Dispose();
                    mso = null;
                }
            }

            return result;
            #endregion
        }

        public byte[] unZipData(byte[] inputData)
        {
            if (inputData == null)
            {
                throw new ArgumentNullException("input data cannot be null.");
            }

            byte[] result;

            #region MS decompressor
            MemoryStream msi = null;
            MemoryStream mso = null;
            try
            {
                msi = new MemoryStream(inputData);
                mso = new MemoryStream();
                GZipStream gzipStream = null;
                try
                {
                    gzipStream = new GZipStream(msi, CompressionMode.Decompress, false);
                    #region copy stream
                    const int BUFFER_SIZE = 4096;
                    byte[] buffer = new byte[BUFFER_SIZE];
                    int bytesRead;
                    long totalBytesRead = 0;
                    while ((bytesRead = gzipStream.Read(buffer, 0, BUFFER_SIZE)) != 0)
                    {
                        mso.Write(buffer, 0, bytesRead);
                        totalBytesRead += bytesRead;
                    }
                    mso.Flush();
                    #endregion
                }
                catch (Exception ex)
                {
                    System.Diagnostics.Debug.WriteLine(ex.Message + "\r\n" + ex.StackTrace);
                    throw;
                }
                finally
                {
                    if (gzipStream != null)
                    {
                        gzipStream.Close();
                        gzipStream.Dispose();
                        gzipStream = null;
                    }
                }

                result = mso.ToArray();
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message + "\r\n" + ex.StackTrace);
                throw;
            }
            finally
            {
                if (msi != null)
                {
                    msi.Close();
                    msi.Dispose();
                    msi = null;
                }

                if (mso != null)
                {
                    mso.Close();
                    mso.Dispose();
                    mso = null;
                }
            }

            return result;
            #endregion
        }

        public byte[] zipStr2Data(string inputData)
        {
            byte[] strData = encode.GetBytes(inputData);
            return zipData(strData);
        }

        public string unZipData2Str(byte[] inputdata)
        {
            byte[] outData = unZipData(inputdata);
            return encode.GetString(outData, 0, outData.Length);
        }
    }
}

 

 

分享到:
评论

相关推荐

    .NET Compact Framework 3.5版的新特性(PPT)

    .NET Compact Framework 3.5是微软为嵌入式设备和移动平台开发的应用程序提供的一套框架,它在.NET Framework的基础上进行了优化,以适应资源有限的环境。这个版本引入了许多新特性和改进,使得开发者能够在小型设备...

    .NET Compact Framework 3.5版的新特性(Video)

    1. LINQ支持:.NET Compact Framework 3.5引入了Language Integrated Query (LINQ)的支持,这是一项革命性的编程技术,允许开发者使用自然的SQL语法直接在C#或VB.NET代码中进行数据查询。这极大地简化了数据访问和...

    NET Compact FrameWork 3.5

    2. **开发工具**:开发者通常使用Visual Studio 2008或更高版本来开发.NET Compact Framework 3.5的应用程序,这些工具提供了一整套集成开发环境(IDE),包括代码编辑器、调试器和项目管理工具。 3. **类库**:...

    Visual Studio 2008.NET Compact Framework 3.5Mobile

    综上所述,通过使用 Visual Studio 2008 和 .NET Compact Framework 3.5,开发者能够高效地为 Windows Mobile 6.0 设备开发高质量的应用程序。这些工具和技术不仅简化了开发过程,还提升了最终用户的使用体验。

    Visual Studio 2008开发新特性系列课程(10):使用Visual Studio 2008和.NET Compact Framework 3.5创建Mobile应用程序

    在本课程中,我们将深入探讨如何使用Visual Studio 2008和.NET Compact Framework 3.5来构建针对移动设备的应用程序。Visual Studio 2008是Microsoft提供的一款强大的集成开发环境(IDE),它为开发者提供了丰富的...

    系统环境 Microsoft.NET Compact Framework 3.5_PocketPC 5.0_PocketPC 6.0(6.5).cab

    系统环境 Microsoft.NET Compact Framework 3.5_PocketPC 5.0_PocketPC 6.0(6.5).cab

    .NET Compact Framework 2.0.zip

    标题中的".NET Compact Framework 2.0.zip"表明这是一个包含.NET Compact Framework 2.0相关组件的压缩文件,用户可以通过解压并安装其中的CAB包来在PDA环境下部署.NET环境和SQL Server支持。 描述中提到的"两个PDA...

    WinCE和Windos Mobile(.Net Compact Framework)开发

    包括《Windows CE.net内核定制及应用开发.pdf》、《Microsoft .NET mobiililaitteille: .NET Compact Framework.pdf》和《Microsoft .NET Compact Framework 3.5版的新特性.pdf》。

    Microsoft.NET Compact Framework 微软 移动 开发 Windows Mobile

    .NET Compact Framework是微软为移动设备和嵌入式系统设计的一个精简版.NET Framework,它为开发者提供了一个在Windows Mobile、Windows CE(包括Wince)等平台上构建应用程序的强大环境。本书将深入探讨这一框架的...

    Microsoft .NET Compact Framework 2.0 SP1

    此安装程序数据库中包含安装 Microsoft .NET Compact Framework 2.0 所需的逻辑和数据

    Microsoft.NET Framework 3.5

    通过使用 .NET Framework 3.5,开发者可以轻松地开发桌面应用程序、Web 应用程序、移动应用程序以及服务导向架构等。此外,.NET Framework 3.5 还提供了大量的类库和功能模块,使得开发过程更加高效和便捷。

    Newtonsoft.Json Compact 3.5 For WinCE

    这个是WinCE 5.0或WinCE 6.0开发应用程序可以用到的,只要引用Compact文件夹里面的Newtonsoft.Json.Compact.dll文件就可以使用了,引用需要用到.Net Framework Compact 3.5版本,最好搭上Visual Studio 2008

    .NET 2.0与3.5

    4. **WinCE端的应用开发**:在Windows CE设备上开发.NET应用,通常需要使用Visual Studio的特定版本,并选择.NET Compact Framework作为目标框架。开发者可以使用C#或VB.NET编写代码,然后利用模拟器或实际设备进行...

    .net compact framework 自定义Radiobutton

    .net compact framework 自定义Radiobutton

Global site tag (gtag.js) - Google Analytics