Showing posts with label Zipstream. Show all posts
Showing posts with label Zipstream. Show all posts

Monday, 5 March 2012

How to Compress the File using Dot Net Application

we are going to discuss about how to compress the file using asp.net application , ie: for compression there are some third party tools like CSharpZip (not sue about the name of the tools..) ,gzip, etc..
Asp.net has inbuilt with Compression ie: derive from the Class
using System.IO.Compression;
There are two compression derived from this namespace.
1) Gzipstream
2) Deflate stream
Deflate seems to be must faster than the Gzipstream but Deflate doesn't uncompress other formats , but Gzipstream decompress the other files like winzip, winrar .
Now we are going to see Gzipstream it has a class which contains filename and compression mode , Compression mode has two values Compress and Decompress.
Button_ClickEvent
CompressFile(Server.MapPath("~/Decompressed/FindEmai_onTextfile.txt"),;
Server.MapPath("~/Decompressed/FindEmai_onTextfile.zip"));
Here you have to give two parameter first one is Sourcefilename to be compressed , second is path where you have to place the compressed file. it will check if the file exists the compressed file has been placed there, else it will create on the fly.
Method definition
public static void CompressFile(string sourceFileName, string destinationFileName)
    {
 
 FileStream outStream;
 
 FileStream inStream;
 
 //Check if the source file exist.          
 
 if (File.Exists(sourceFileName))
    {
 
 //Read teh input file
 
 //Check if the destination file exist else create once
 outStream = File.Open(destinationFileName, FileMode.OpenOrCreate);
 
 GZipStream zipStream = new GZipStream(outStream, CompressionMode.Compress);
 
 //Now create a byte array to hold the contents of the file
 
 byte[] fileContents = new byte[inStream.Length];
 
 //Read the contents to this byte array
 
 inStream.Read(fileContents, 0, fileContents.Length);
 
 zipStream.Write(fileContents, 0, fileContents.Length);
 
 //Now close all the streams.
 
 zipStream.Close();
 
 inStream.Close();
 
 outStream.Close();
 
    }
 
    }

How To Decompress File Using Dot Net Application

In previous post we seen how to compress the file this will helpful when the file is large you can
compress the file.

Now we will see how to Decompress the file
Button_Click event.
DecompressFile(Server.MapPath("~/Decompressed/FindEmai_onTextfile.zip"),Server.MapPath("~/Decompressed/FindEmai_onTextfile.txt"));

Here i just swap the filename so it may confuse so use some different path(Folder) or filename

Decompress Method

    public static void DecompressFile(string        
    sourceFileName, string destinationFileName)
    {
    FileStream outStream;
    FileStream inStream;
    //Check if the source file exist.          
    if (File.Exists(sourceFileName))
      {
    //Read teh input file
    inStream = File.OpenRead(sourceFileName);
    //Check if the destination file exist else create once
    outStream = File.Open(destinationFileName, 
    FileMode.OpenOrCreate);
    //Now create a byte array to hold the contents of the 
    file
    //Now increase the filecontent size more since the 
    compressed file
    //size will always be less then the actuak file.
    byte[] fileContents = new byte[(inStream.Length * 
    100)];
    //Read the file and decompress
    GZipStream zipStream = new GZipStream(inStream, 
    CompressionMode.Decompress, false);
    //Read the contents to this byte array
    int totalBytesRead = zipStream.Read(fileContents, 0, 
    fileContents.Length);
    outStream.Write(fileContents, 0, totalBytesRead);
    //Now close all the streams.
    zipStream.Close();
    inStream.Close();
    outStream.Close();
        }
    }