SIGN UP MEMBER LOGIN:    
ARTICLE

How to: Compress and Decompress Data

Posted by Muhammad Shakir Articles | Current Affairs February 01, 2008
This article shows that how we can compress and decompress our data.
Reader Level:

"Compression and Decompression" is most common word when you transfer your data from one place to another. Sometimes you have large size of data that can not transfer (e.g. mail attachment). You use a software (Zip) to compress your data and able to transfer it. And on other end, you decompress your data and get the original data.

 

But if you are developing your own application that transfer data from one place to another (FTP) that can take much time to transfer data because of size of data. At that time, when you want to embed zipping method in your application so that you just pass the data and after zipping, data can transfer; Zip software will not be helpful.

I search a lot of material, how to do; I got some code. I modify that code according to my requirement and develop two function; one compress data and other decompress it. You just need to pass your data file with complete path and it will compress the file & decompress too. Even you may use your own extension and embed it in your application.

 

System.IO.Compression is package and using GZip Compression & decompression method.

Use it and Enjoy!

 

Compression

 

public static void Compress(string strPath)

{

     DateTime current;

     string dstFile = "";// "C:\\temp\\compressed-file.gzip";

     FileStream fsIn = null;

     FileStream fsOut = null;

     GZipStream gzip = null;

     byte[] buffer;

     int count = 0;

     try

     {

         current = DateTime.Now;

         dstFile = Application.StartupPath + "\\" + "Request" + current.Day.ToString() + current.Month.ToString() + current.Year.ToString() + current.Hour.ToString() + current.Minute.ToString() + current.Second.ToString() + ".zip"; // may use own extension

 

    fsOut = new FileStream(dstFile, FileMode.Create, FileAccess.Write, FileShare.None);

    gzip = new GZipStream(fsOut, CompressionMode.Compress, true);

    fsIn = new FileStream(strPath, FileMode.Open, FileAccess.Read, FileShare.Read);

    buffer = new byte[fsIn.Length];

    count = fsIn.Read(buffer, 0, buffer.Length);

    fsIn.Close();

    fsIn = null;

 

    // compress to the destination file

    gzip.Write(buffer, 0, buffer.Length);

   }

   catch (Exception ex)

   {

    // handle or display the error

         System.Diagnostics.Debug.Assert(false, ex.ToString());

   }

   finally

   {

        if (gzip != null)

        {

              gzip.Close();

              gzip = null;

        }

        if (fsOut != null)

        {

             fsOut.Close();

             fsOut = null;

        }

        if (fsIn != null)

        {

             fsIn.Close();

             fsIn = null;

        }

    }

}

 

public static void Decompress(string strPath)

{

    DateTime current;

    string dstFile = "";

 

    FileStream fsIn = null;

    FileStream fsOut = null;

    GZipStream gzip = null;

    const int bufferSize = 4096;

    byte[] buffer = new byte[bufferSize];

    int count = 0;

 

    try

    {

        current = DateTime.Now;

        dstFile = Application.StartupPath + "\\" + current.Day.ToString() + current.Month.ToString() + current.Year.ToString() + current.Hour.ToString() + current.Minute.ToString() + current.Second.ToString() + ".txt";

        fsIn = new FileStream(strPath, FileMode.Open, FileAccess.Read, FileShare.Read);

        fsOut = new FileStream(dstFile, FileMode.Create, FileAccess.Write, FileShare.None);

        gzip = new GZipStream(fsIn, CompressionMode.Decompress, true);

        while (true)

        {

            count = gzip.Read(buffer, 0, bufferSize);

            if (count != 0)

            {

                fsOut.Write(buffer, 0, count);

            }

            if (count != bufferSize)

            {

                // have reached the end

                break;

            }

        }

    }

    catch (Exception ex)

    {

        // handle or display the error

        System.Diagnostics.Debug.Assert(false, ex.ToString());

    }

    finally

    {

        if (gzip != null)

        {

            gzip.Close();

            gzip = null;

        }

        if (fsOut != null)

        {

            fsOut.Close();

            fsOut = null;

        }

        if (fsIn != null)

        {

            fsIn.Close();

            fsIn = null;

        }

    }

} 

Login to add your contents and source code to this article
share this article :
post comment
 

i have one .dat file in both format compress and decompress + decompress tool also. i want to know what kind of compression is this and how to compress it again same like decompressed file can anyone help me in this regards here are links http://www.4shared.com/file/PhqxsyC3/dbcivilization_compress_.html http://www.4shared.com/file/uwRprFkN/dbcivilization_Decompress_.html Thanx in Advance

Posted by Naveen Daniya Nov 02, 2011

It depends either you have write permission on ftp server. It will be same as we do on local, if you know algorithm through which it had compressed

Posted by Muhammad Shakir Feb 15, 2011

how to decompress on FTP server from loacal machine using .net

Posted by sant desh Feb 04, 2011

hi. I have been attached source file that would be easy to zip and unzip the file. Above error was a path issue. I hope, it will resolve now. 


Thanks

Posted by Muhammad Shakir Oct 24, 2010

hi i am getting error in this line 
dstFile = Application.StartupPath + "\\" + "Request" + current.Day.ToString() + current.Month.ToString() + current.Year.ToString() + current.Hour.ToString() + current.Minute.ToString() + current.Second.ToString() + ".zip"// may use own extension

the error is 
Error 1 An object reference is required for the non-static field, method, or property 'System.Web.UI.Page.Application.get' C:\Documents and Settings\VISHANK\My Documents\Visual Studio 2008\WebSites\WebSite8\fileupload.aspx.cs 47 23 C:\...\WebSite8\


could you tell me the solution 

Posted by vishank desai Oct 24, 2010
Team Foundation Server Hosting
Become a Sponsor
PREMIUM SPONSORS
  • ceTE software specializes in components for dynamic PDF generation and manipulation. The DynamicPDF™ product line allows you to dynamically generate PDF documents, merge PDF documents and new content to existing PDF documents from within your applications.
    Get 2 Months Free of ASP.NET Hosting for Only $4.95/month! Receive FREE MS SQL and MySQL Databases Including ASP.NET 4/3.5, MVC 3.0, Silverlight 4, Windows 2008/IIS 7.0 Plus FREE IIS 7 Modules. Host UNLIMITED ASP.NET Web Sites - Click Here!
6 Months Free & No Setup Fees ASP.NET Hosting!
Become a Sponsor