Creare file ZIP con System.IO.Packaging

di , in Windows Presentation Foundation,

Con il .NET Framework 3.0 Microsoft ha incluso nuovi framework quali Windows Communication Foundation, Windows Presentation Foundation e Windows Workflow Foundation, ma ha anche aggiunto il supporto alla lettura e la manipolazionei di documenti XPS (XML Paper Specification). Quest'ultimi sono pacchetti di file XML e risorse che rappresentano documenti WYSWYG pronti per essere consultati e stampati.

Di fatto questi pacchetti non sono altro che file ZIP, detti Package i quali contengono file eventualmente compressi, detti PackagePart, strutturati secondo il container ZIP. In unione ad essi è presente un file [Content_Types].xml contenente informazioni aggiuntive come il content-type di ogni file e le relazioni interne o esterne al file stesso.

Questa tecnologia è aperta e può quindi essere sfruttata anche per altri scopi, per esempio per creare semplicemente file ZIP, attraverso la classe ZipPackage del namespace System.IO.Packaging.

// Creo il file ZIP
using (Package packege = ZipPackage.Open("test.zip", FileMode.Create))
{
  // Inserisco il primo file
  PackagePart part = packege.CreatePart(new Uri("/file1.txt", UriKind.Relative), MediaTypeNames.Text.Plain, CompressionOption.Normal);

  // Apro lo stream e inserisco del testo
  using (Stream partStream = part.GetStream())
  {
    using (StreamWriter writer = new StreamWriter(partStream))
    {
      writer.Write("Test");
    }
  }

  // Creo il secondo file in una sotto directory
  part = packege.CreatePart(new Uri("/subDir/file2.jpg", UriKind.Relative), MediaTypeNames.Image.Jpeg, CompressionOption.Normal);

  using (Stream partStream = part.GetStream())
  {
    // Copio il file nello stream
    using (Stream fileStream = File.OpenRead(@"c:\immagine.jpg"))
    {
      fileStream.WriteToStream(partStream, 4096);
    }
  }
}

Il metodo WriteToStream sullo stream serve per travasare il file ed è descritto nello script #93.

Per approfondimenti su Open Packaging Conventions:
http://www.microsoft.com/whdc/xps/downloads.mspx

Commenti

Visualizza/aggiungi commenti

Creare file ZIP con System.IO.Packaging (#115)
| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi