Home
Login

Crea un account

Cerca

Ricerca avanzata

 
 
 
 
 




 
 
 
 

 
 
 

 
 
 
 
 













Creare dinamicamente uno ZIP da programma

Comprimere i file con la libreria SharpZipLib.

8 utenti hanno valutato questo contenuto
Livello:
 Qualità:
44% = Intermedio 94% = Ottimo

Pagina 1 di 3    Successiva >>

 Versione stampabile

Con la classe SharpZipLib è possibile creare un archivio ZIP dall'interno di una applicazione .NET in modo molto semplice.

La libreria è disponibile (con i relativi sorgenti) sul sito www.icsharpcode.net, ed è rilasciata con una particolare licenza GPL, che ne permette l'utilizzo anche in prodotti commerciali; gli autori della libreria sono gli stessi di SharpDevelop, il noto IDE alternativo e gratuito per .NET.

I concetti illustrati in questo articolo saranno riutilizzabili con il Framework 2.0, dove il concetto di stream compresso sarà incluso di default.

Per creare un file ZIP è necessario anzitutto creare uno ZIPOutputStream, ossia un FileStream compresso:

VB.NET


' stream di scrittura dello ZIP
Dim strmZipOutputStream As New ZipOutputStream(File.Create("c:\prova.zip"))

C#


// stream di scrittura dello ZIP
ZipOutputStream strmZipOutputStream = new ZipOutputStream(File.Create(ZipFileName));

Affinchè si possa garantire in seguito una corretta decompressione dei file archiviati, il formato ZIP prevede il calcolo del CRC32 di ogni singolo file aggiunto all'archivio. Creiamo quindi l'oggetto CRC32 che si occuperà di fornire il valore del CRC per ogni file.

VB.NET


' classe per il calcolo del CRC32
Dim objCrc32 As New Crc32

C#


// classe per il calcolo del CRC32
Crc32 objCrc32 = new Crc32();

L'oggetto ZipOutputStream permette di definire il livello di compressione da applicare ai file. Il parametro è impostabile tramite il metodo SetLevel.

Il valore 7 è un buon compromesso tra il tempo necessario alla compressione e la dimensione finale dell'archivio ottenuto. Si noti che per file poco comprimibili, ad esempio le immagini JPG o i filmati AVI/MPG, è inutile salire oltre un valore 5.

VB.NET


' livello di compressione
' 0: no compression (store)
' 9: maximum compression
strmZipOutputStream.SetLevel(7)

C#


// livello di compressione
// 0: no compression (store)
// 9: maximum compression
strmZipOutputStream.SetLevel(7);

Pagina 1 di 3    Successiva >>


 ©2004-2005 Code Architects S.r.l. - All rights reserved