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.