Compressing and decompressing files with BZip2 in .NET C#
March 16, 2016 Leave a comment
BZip2 is yet another data compression algorithm, similar to GZip and Deflate. There’s no native support for BZip2 (de)compression in .NET but there’s a NuGet package provided by icsharpcode.net.
You’ll need to import the following NuGet package to use BZip2:
You can compress a file as follows:
FileInfo fileToBeZipped = new FileInfo(@"c:\bzip2\logfile.txt");
FileInfo zipFileName = new FileInfo(string.Concat(fileToBeZipped.FullName, ".bz2"));
using (FileStream fileToBeZippedAsStream = fileToBeZipped.OpenRead())
{
using (FileStream zipTargetAsStream = zipFileName.Create())
{
try
{
BZip2.Compress(fileToBeZippedAsStream, zipTargetAsStream, true, 4096);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
…and this is how you can decompress the resulting bz2 file again:
using (FileStream fileToDecompressAsStream = zipFileName.OpenRead())
{
string decompressedFileName = @"c:\bzip2\decompressed.txt";
using (FileStream decompressedStream = File.Create(decompressedFileName))
{
try
{
BZip2.Decompress(fileToDecompressAsStream, decompressedStream, true);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
Read all posts dedicated to file I/O here.
