Zipper.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.IO.Compression;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace ConsoleApplication6
  9. {
  10. class Zipper
  11. {
  12. public static void Compress(FileInfo fi)
  13. {
  14. // Get the stream of the source file.
  15. using (FileStream inFile = fi.OpenRead())
  16. {
  17. // Prevent compressing hidden and
  18. // already compressed files.
  19. if ((File.GetAttributes(fi.FullName) & FileAttributes.Hidden) != FileAttributes.Hidden & fi.Extension != ".gz")
  20. {
  21. // Create the compressed file.
  22. using (FileStream outFile = File.Create(fi.FullName + ".gz"))
  23. {
  24. using (GZipStream Compress =
  25. new GZipStream(outFile,
  26. CompressionMode.Compress))
  27. {
  28. // Copy the source file into
  29. // the compression stream.
  30. inFile.CopyTo(Compress);
  31. }
  32. }
  33. }
  34. }
  35. }
  36. public static void Decompress(FileInfo fileToDecompress)
  37. {
  38. try
  39. {
  40. using (FileStream originalFileStream = fileToDecompress.OpenRead())
  41. {
  42. string currentFileName = fileToDecompress.FullName;
  43. string newFileName = currentFileName.Remove(currentFileName.Length - fileToDecompress.Extension.Length);
  44. using (FileStream decompressedFileStream = File.Create(newFileName))
  45. {
  46. using (GZipStream decompressionStream = new GZipStream(originalFileStream, CompressionMode.Decompress))
  47. {
  48. decompressionStream.CopyTo(decompressedFileStream);
  49. }
  50. }
  51. }
  52. }
  53. catch (Exception es)
  54. {
  55. Console.WriteLine(es.Message);
  56. }
  57. }
  58. }
  59. }