C# DeflateStream DeflateStream(Stream, CompressionMode, Boolean)
Description
DeflateStream DeflateStream(Stream, CompressionMode, Boolean)
Initializes a new instance of the DeflateStream class by using the
specified stream and compression mode, and optionally leaves the stream
open.
Syntax
DeflateStream.DeflateStream(Stream, CompressionMode, Boolean)
has the following syntax.
public DeflateStream(
Stream stream,//from ww w. ja va 2 s. c om
CompressionMode mode,
bool leaveOpen
)
Parameters
DeflateStream.DeflateStream(Stream, CompressionMode, Boolean)
has the following parameters.
stream
- The stream to compress or decompress.mode
- One of the enumeration values that indicates whether to compress or decompress the stream.leaveOpen
- true to leave the stream open after disposing the DeflateStream object; otherwise, false.
Example
The following code example shows how to use the DeflateStream class to compress and decompress a file.
/* w ww .j av a2s .co m*/
using System;
using System.IO;
using System.IO.Compression;
public class Program
{
public static void Main()
{
string directoryPath = @"c:\users\public\reports";
DirectoryInfo directorySelected = new DirectoryInfo(directoryPath);
foreach (FileInfo fileToCompress in directorySelected.GetFiles())
{
Compress(fileToCompress);
}
foreach (FileInfo fileToDecompress in directorySelected.GetFiles("*.cmp"))
{
Decompress(fileToDecompress);
}
}
public static void Compress(FileInfo fileToCompress)
{
using (FileStream originalFileStream = fileToCompress.OpenRead())
{
if ((File.GetAttributes(fileToCompress.FullName) & FileAttributes.Hidden)
!= FileAttributes.Hidden & fileToCompress.Extension != ".cmp")
{
using (FileStream compressedFileStream = File.Create(fileToCompress.FullName + ".cmp"))
{
using (DeflateStream compressionStream = new DeflateStream(compressedFileStream, CompressionMode.Compress))
{
originalFileStream.CopyTo(compressionStream);
Console.WriteLine("Compressed {0} from {1} to {2} bytes.",
fileToCompress.Name, fileToCompress.Length.ToString(), compressedFileStream.Length.ToString());
}
}
}
}
}
public static void Decompress(FileInfo fileToDecompress)
{
using (FileStream originalFileStream = fileToDecompress.OpenRead())
{
string currentFileName = fileToDecompress.FullName;
string newFileName = currentFileName.Remove(currentFileName.Length - fileToDecompress.Extension.Length);
using (FileStream decompressedFileStream = File.Create(newFileName))
{
using (DeflateStream decompressionStream = new DeflateStream(originalFileStream, CompressionMode.Decompress))
{
decompressionStream.CopyTo(decompressedFileStream);
Console.WriteLine("Decompressed: {0}", fileToDecompress.Name);
}
}
}
}
}