4 Stimmen

Wie man ZipPackage verwendet, um ein Zip zu erstellen

Ich habe das Dokument auf MSDN über die ZipPackage-Klasse gesehen.

Das dortige Beispiel ist nicht sehr nützlich. Kann mir jemand ein Beispiel über diese Klasse geben?

5voto

Olivier de Rivoyre Punkte 1500

Hier ein Beispiel, beachten Sie:

  • ZipPackage scheint nicht zu komprimieren
  • Die generierte Zip-Datei enthält eine unerwünschte Datei "[Content_Types].xml"
  • System.IO.Compression seit .Net 4.5 scheint eine gute Alternative zu sein

Sie müssen in Visual Studio eine Referenz zu "WindowsBase" hinzufügen (ohne Präfix wie "System.IO.")

using System;
using System.Linq;
using System.Text;
using System.IO.Packaging;
using System.IO;

namespace TestZip
{
 public static class  Program
 {
  public static void Main(string[] args)
  {
   byte[] data = Encoding.UTF8.GetBytes(String.Join("\n", new string[1000].Select(s => "Etwas zum Zippen.").ToArray()));
   byte[] zippedBytes;
   using(MemoryStream zipStream = new MemoryStream())
   {
    using (Package package = Package.Open(zipStream, FileMode.Create))
    {
     PackagePart document = package.CreatePart(new Uri("/test.txt", UriKind.Relative), "");
     using (MemoryStream dataStream = new MemoryStream(data))
     {
      document.GetStream().WriteAll(dataStream);
     }     
    }    
    zippedBytes = zipStream.ToArray();
   }
   File.WriteAllBytes("test.zip", zippedBytes);
  }

  private static void WriteAll(this Stream target, Stream source)
  {
   const int bufSize = 0x1000;
   byte[] buf = new byte[bufSize];
   int bytesRead = 0;
   while ((bytesRead = source.Read(buf, 0, bufSize)) > 0)
    target.Write(buf, 0, bytesRead);
  }
 }
}

1voto

DevT Punkte 4545

Schauen Sie sich dieses Code-Projekt an -

C# Verwendung von Zip-Archiven ohne externe Bibliotheken.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X