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)