Zip/compress one file using Gzipstream

By Super Man

in this FAQ , we see how to zip/compress one file using Gzip stream class.

using System.Security.Cryptography;

private void button1_Click(object sender, EventArgs e)

{

// Path to file to compress and decompress.

string fpath = @"e:\hello.exe";

FileInfo f1 = new FileInfo(fpath);

Compress(fi);

string fpath2 = @"e:\hello.gz";

FileInfo f2 = new FileInfo(fpath2);

Decompress(f2);

}

public static void Compress(FileInfo fi)

{

// Get the stream of the source file.

using (FileStream inFile = fi.OpenRead())

{

// Prevent compressing hidden and

// already compressed files.

if ((File.GetAttributes(fi.FullName)

& FileAttributes.Hidden)

!= FileAttributes.Hidden & fi.Extension != ".gz")

{

// Create the compressed file.

using (FileStream outFile =

File.Create(fi.FullName + ".gz"))

{

using (GZipStream Compress =

new GZipStream(outFile,

CompressionMode.Compress))

{

// Copy the source file into

// the compression stream.

inFile.CopyTo(Compress);

Console.WriteLine("Compressed {0} from {1} to {2} bytes.",

fi.Name, fi.Length.ToString(), outFile.Length.ToString());

}

}

}

}

}

public static void Decompress(FileInfo fi)

{

// Get the stream of the source file.

using (FileStream inFile = fi.OpenRead())

{

// Get original file extension, for example

// "doc" from report.doc.gz.

string curFile = fi.FullName;

string origName = curFile.Remove(curFile.Length -

fi.Extension.Length);

//Create the decompressed file.

using (FileStream outFile = File.Create(origName))

{

using (GZipStream Decompress = new GZipStream(inFile,

CompressionMode.Decompress))

{

// Copy the decompression stream

// into the output file.

Decompress.CopyTo(outFile);

Console.WriteLine("Decompressed: {0}", fi.Name);

}

}

}

}

Zip/compress one file using Gzipstream  (2140 Views)