Desenvolvimento - C#
Compactação com GZipStream e DeflateStream
Um recurso bastante útil que foi incluído no .NET 2.0 foi o suporte à compatação GZip, por 2 métodos: GZipStream e DeflateStream, ambos presentes no namespace System.IO.Compression.
por Rodolfo PaoniUm recurso bastante útil que foi incluído no .NET 2.0 foi o suporte à compatação GZip, por 2 métodos: GZipStream e DeflateStream, ambos presentes no namespace System.IO.Compression. A diferença entre essas classes está no algoritmo de compressão. Ambas possuem uma enumeration chamada CompressionMode onde pode ser definido o nível de compressão utilizado. Abaixo demonstro uma classe com 4 métodos básicos para compressão e descompresão em cada um dos algoritmos, onde os parâmetros são o arquivo de origem e o arquivo de destino, respectivamente.
Espero ter ajudado,
Abraços
public static class Compact { public static void GzCompressFile(string arqOrigem, string arqCompactado) { try { using (FileStream sourceFile = File.OpenRead(arqOrigem)) { using (FileStream destFile = File.Create(arqCompactado)) { using (GZipStream compstream = new GZipStream(destFile, CompressionMode.Compress)) { const int buf_size = 8192; byte[] buffer = new byte[buf_size]; int bytes_read = 0; do { bytes_read = sourceFile.Read(buffer, 0, buf_size); compstream.Write(buffer, 0, bytes_read); } while (bytes_read != 0); } } } } catch { } } public static void GzDecompressFile(string arqCompactado, string arqDestino) { try { using (FileStream sourceFile = File.OpenRead(arqCompactado)) { using (FileStream destFile = File.Create(arqDestino)) { using (GZipStream compstream = new GZipStream(sourceFile, CompressionMode.Decompress)) { int theByte = compstream.ReadByte(); while (theByte != -1) { destFile.WriteByte((byte)theByte); theByte = compstream.ReadByte(); } } } } } catch { } } public static void DfCompressFile(string arqOrigem, string arqCompactado) { try { using (FileStream sourceFile = File.OpenRead(arqOrigem)) { using (FileStream destFile = File.Create(arqCompactado)) { using (DeflateStream compstream = new DeflateStream(destFile, CompressionMode.Compress)) { const int buf_size = 8192; byte[] buffer = new byte[buf_size]; int bytes_read = 0; do { bytes_read = sourceFile.Read(buffer, 0, buf_size); compstream.Write(buffer, 0, bytes_read); } while (bytes_read != 0); } } } } catch { } } public static void DfDecompressFile(string arqCompactado, string arqDestino) { try { using (FileStream sourceFile = File.OpenRead(arqCompactado)) { using (FileStream destFile = File.Create(arqDestino)) { using (DeflateStream compstream = new DeflateStream(sourceFile, CompressionMode.Decompress)) { int theByte = compstream.ReadByte(); while (theByte != -1) { destFile.WriteByte((byte)theByte); theByte = compstream.ReadByte(); } } } } } catch { } } }
Espero ter ajudado,
Abraços