Oltre alle classi esterne come SharpZipLib, dalla versione 2.0 del .NET Framework è disponibile una classe apposita per la compressione degli stream.
Vediamo un esempio semplice per comprimere un file:
string SourceFile = "C:\\file.txt"; string DestinationFile = "C:\\file.gzip"; using (FileStream streamWriter = new FileStream(DestinationFile, FileMode.Create, FileAccess.Write, FileShare.None)) { using (FileStream streamReader = new FileStream(SourceFile, FileMode.Open, FileAccess.Read, FileShare.Read)) { using (GZipStream gzip = new GZipStream(streamWriter, CompressionMode.Compress, true)) { byte[] buffer = new byte[streamReader.Length]; streamReader.Read(buffer, 0, buffer.Length); gzip.Write(buffer, 0, buffer.Length); } } }
E per la decompressione:
string SourceFile = "C:\\file.gzip"; string DestinationFile = "C:\\file.txt"; using (FileStream streamReader = new FileStream(SourceFile, FileMode.Open, FileAccess.Read, FileShare.Read)) { using (FileStream streamWriter = new FileStream(DestinationFile, FileMode.Create, FileAccess.Write, FileShare.None)) { using (GZipStream gzip = new GZipStream(streamReader, CompressionMode.Decompress, true)) { const int bufferSize = 1024; byte[] buffer = new byte[bufferSize]; while (true) { int count = gzip.Read(buffer, 0, bufferSize); if (count != 0) streamWriter.Write(buffer, 0, count); else break; } } } }
Questa tecnica è applicabile a qualsiasi tipo di Stream, dunque si può sfruttare anche in HttpModule per comprimere al volo, in determinati casi e senza utilizzare le funzionalità native di IIS, il contenuto servito da una pagina.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Cache policy su route groups di Minimal API in ASP.NET Core 7
Migliorare la scalabilità di ASP.NET Core 7 grazie all'output cache
Taggare la output cache in base al routing in ASP.NET Core
Usare ASP.NET Core dev tunnels per testare le applicazioni su internet
Sfruttare i tag nell'output cache di ASP.NET Core 7
Gestire tipi complessi in query string grazie a IParsable in ASP.NET Core 7.0
Sfruttare l'output cache di ASP.NET Core 7 con i controller
Sfruttare la local cache del browser tramite gli ETag in ASP.NET Core
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Gestire la query string nell'output cache di ASP.NET Core
Catturare la telemetria degli eventi di output cache in ASP.NET Core
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
I più letti di oggi
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Creare dei grafici con OWC
- Utilizzare i collapse di Bootstrap 4
- Confermati ufficialmente al posto di Metro Style App: Windows Store App e Modern App
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!