Advertisement
Guest User

Untitled

a guest
Jul 9th, 2014
382
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.01 KB | None | 0 0
  1. using System.IO;
  2. using System.IO.Compression;
  3. using System.Threading.Tasks;
  4.  
  5. namespace GZipComressionTestApp
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             //var task = Task.Run(() => Compress(File.ReadAllBytes("SkypeSetup.exe"), "SkypeSetup.exe.gz"));
  12.             //task.Wait();
  13.             var task = Task.Run(() => Decompress(DecompressToMemoryStream("SkypeSetup.exe.gz").Result));
  14.             task.Wait();
  15.         }
  16.  
  17.         public static async Task Compress(byte[] buffer, string outputFile)
  18.         {
  19.             using (var inputStream = new MemoryStream(buffer))
  20.             {
  21.                 await Compress(inputStream, outputFile);
  22.             }
  23.         }
  24.  
  25.         public static async Task Compress(Stream inputStream, string outputFile)
  26.         {
  27.             using (var outputStream = File.Create(outputFile))
  28.             using (var gzipStream = new GZipStream(outputStream, CompressionMode.Compress))
  29.             {
  30.                 await inputStream.CopyToAsync(gzipStream);
  31.                 gzipStream.Close();
  32.             }
  33.         }
  34.  
  35.         public static async Task<MemoryStream> DecompressToMemoryStream(string inputFile)
  36.         {
  37.             var outputStream = new MemoryStream();
  38.  
  39.             using (var inputStream = File.Open(inputFile, FileMode.Open, FileAccess.Read, FileShare.Read))
  40.             using (var gzipStream = new GZipStream(inputStream, CompressionMode.Decompress))
  41.             {
  42.                 await gzipStream.CopyToAsync(outputStream);
  43.  
  44.                 gzipStream.Close();
  45.                 inputStream.Close();
  46.                 outputStream.Position = 0;
  47.                 return outputStream;
  48.             }
  49.         }
  50.  
  51.         public static async Task Decompress(MemoryStream memoryStream)
  52.         {
  53.             using (var fileStream = new FileStream("SkypeSetup.exe", FileMode.Create, FileAccess.Write, FileShare.Write))
  54.             {
  55.                 await memoryStream.CopyToAsync(fileStream);
  56.             }
  57.         }
  58.     }
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement