#115 - Creare file ZIP con System.IO.Packaging
di Cristian Civera, in Windows Presentation Foundation, 10 aprile 2009
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
Approfondimenti
-
Le novità di Windows 7 per gli sviluppatori
-
12 aprile 2010: ecco la data ufficiale di lancio di VS 2010 e .NET Framework 4.0
-
#131 - Disegnare linee in una scena 3D WPF
-
#155 - Gestire e ottimizzare messaggi di grandi dimensioni in WCF
-
Disponibile la beta 1 del .NET Framework 4.0 e di Visual Studio 2010
-
#111 - Personalizzare la serializzazione delle entità di ADO.NET Data Services
-
Oltre il database, da Bing a Twitter: i provider per LINQ per ogni esigenza
-
.NET Framework 4.0 beta 1: Windows Communication Foundation
-
.NET Framework 4.0 beta 1: Tuple
-
Realizzare applicazioni web on the cloud con Microsoft Windows Azure
-
#977 - ASP.NET ed Entity Framework: modificare i dati con EntityDataSource
-
Entity Framework in action è in disponibile in MEAP

















Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.