Lesson 3
Compressing Streams
Alcune volte è necessario comprimere uno stream per risparmiare spazio o banda: ci aiutano le classi GZipStream e DeflateStream. Entrambe si limitano a comprimere dati fino a 4GB.
La differenza tra le due è che la prima permette l'introduzione di determinati header per includere informazioni extra utili alla decompressione dello stream. Ne deriva che il file scritto con DeflateStream è più piccolo.
Per comprimere:
FileStream sourceFile = File.OpenRead(inFileName);
FileStream destinationFile = File.Create(outFileName);
GZipStream compStream = new GZipStream(destFile, CompressionMode.Compress);
int theByte = sourceFile.ReadByte();
while(theByte != -1)
{
compStream.WriteByte((byte)theByte);
theByte = sourceFile.ReadByte();
}
Per decomprimere:
FileStream sourceFile = FileOpenRead(inFileName);
FileStream destinationFile = File.Create(outFileName);
GZipStream compStream = new GZipStream(sourceFile, CompressionMode.Decompress);
int theByte = compStream.ReadByte();
while(theByte != -1)
{
destFile.WriteByte((byte)theByte);
theByte = compStream.ReadByte();
}
Technorati tags: [70-536]