Zipper.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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. using (FileStream originalFileStream = fileToDecompress.OpenRead())
  39. {
  40. string currentFileName = fileToDecompress.FullName;
  41. string newFileName = currentFileName.Remove(currentFileName.Length - fileToDecompress.Extension.Length);
  42. using (FileStream decompressedFileStream = File.Create(newFileName))
  43. {
  44. using (GZipStream decompressionStream = new GZipStream(originalFileStream, CompressionMode.Decompress))
  45. {
  46. decompressionStream.CopyTo(decompressedFileStream);
  47. }
  48. }
  49. }
  50. }
  51. }
  52. }