Advertisement
fcamuso

Streams - compressione ZIP / 2

Aug 15th, 2021
1,938
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.55 KB | None | 0 0
  1. using System;
  2. using System.IO.Compression;
  3. using System.IO;
  4. using System.Diagnostics;
  5. using System.Collections.Generic;
  6. using System.Threading.Tasks;
  7.  
  8. namespace StreamZIP_A
  9. {
  10.  
  11.   class Program
  12.   {
  13.  
  14.     static void Main(string[] args)
  15.     {
  16.       //deflate, gzip, Brotli, zip
  17.  
  18.       //goto salto;
  19.  
  20.       Stopwatch watch = Stopwatch.StartNew();
  21.  
  22.       //DEFLATE, compressione (4.7 sec)
  23.       using (FileStream origine = File.OpenRead("enwik8.txt"))
  24.       using (FileStream destinazione = File.Create("compressoDeflate.bin"))
  25.       using (DeflateStream compressore = new(destinazione, CompressionMode.Compress))
  26.         origine.CopyTo(compressore);
  27.  
  28.       watch.Stop();
  29.       Console.WriteLine($"Deflate compressione {watch.ElapsedMilliseconds}");
  30.  
  31.       watch.Start();
  32.       //DEFLATE, DEcompressione
  33.       using (FileStream origine = File.OpenRead("compressoDeflate.bin"))
  34.       using (FileStream destinazione = File.Create("DEcompressoDeflate.txt"))
  35.       using (DeflateStream DeCompressore = new (origine, CompressionMode.Decompress))
  36.         DeCompressore.CopyTo(destinazione);
  37.       watch.Stop();
  38.       Console.WriteLine($"Deflate DEcompressione {watch.ElapsedMilliseconds}");
  39.  
  40.  
  41.       //Brotli, compressione
  42.       watch.Start();
  43.       using (FileStream origine = File.OpenRead("enwik8.txt"))
  44.       using (FileStream destinazione = File.Create("compressoBrotli.bin"))
  45.       using (BrotliStream compressore = new(destinazione, CompressionLevel.Fastest))
  46.         origine.CopyTo(compressore);
  47.  
  48.       watch.Stop();
  49.       Console.WriteLine($"Brotli compressione {watch.ElapsedMilliseconds}");
  50.  
  51.  
  52.       watch.Start();
  53.       //Brotli, DEcompressione
  54.       using (FileStream origine = File.OpenRead("compressoBrotli.bin"))
  55.       using (FileStream destinazione = File.Create("DEcompressoBrotli.txt"))
  56.       using (BrotliStream DeCompressore = new(origine, CompressionMode.Decompress))
  57.         DeCompressore.CopyTo(destinazione);
  58.       watch.Stop();
  59.       Console.WriteLine($"Brotlin DEcompressione {watch.ElapsedMilliseconds}");
  60.  
  61.       watch.Start();
  62.       using (FileStream destinazione = File.Create("compressoZIP.zip"))
  63.       using (ZipArchive zip = new(destinazione, ZipArchiveMode.Create))
  64.       {
  65.         zip.CreateEntryFromFile("enwik8.txt", "enwik8.txt");
  66.         zip.CreateEntryFromFile("StreamZIP_A.dll", "StreamZIP_A.dll");
  67.         zip.CreateEntryFromFile("compressoBrotli.bin", "compressoBrotli.bin");
  68.         zip.CreateEntryFromFile("compressoDeflate.bin", "compressoDeflate.bin");
  69.       }
  70.       watch.Stop();
  71.       Console.WriteLine($"ZIP compressione {watch.ElapsedMilliseconds}");
  72.  
  73.       using (FileStream origine = new ("compressoZIP.zip", FileMode.Open, FileAccess.ReadWrite))
  74.       using (ZipArchive zip = new(origine, ZipArchiveMode.Update))
  75.       {
  76.         //zip.ExtractToDirectory("zipFolder1");
  77.  
  78.         List<ZipArchiveEntry> daEliminare = new List<ZipArchiveEntry>();
  79.        
  80.         foreach(ZipArchiveEntry entry in zip.Entries)
  81.         {
  82.           if (!entry.FullName.EndsWith(".bin"))
  83.             daEliminare.Add(entry);
  84.         }
  85.  
  86.         foreach (ZipArchiveEntry entry in daEliminare)
  87.           entry.Delete();
  88.  
  89.  
  90.       }
  91.  
  92.  
  93.       using (FileStream origine = new("compressoZIP.zip", FileMode.Open, FileAccess.ReadWrite))
  94.       using (ZipArchive zip = new(origine, ZipArchiveMode.Update))
  95.       {
  96.         zip.ExtractToDirectory(".");
  97.       }
  98.     salto:
  99.       //ZipFile.CreateFromDirectory("zipFolder1", "compresso2.zip");
  100.       ZipFile.ExtractToDirectory("compresso2.zip", "zipFolder2");
  101.      
  102.       }
  103.     }
  104. }
  105.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement