Saturday, January 8, 2011

Zip/compress one file using Gzipstream


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);

                    }
                }
            }
        }

No comments:

Post a Comment