GZip is one of the compression method available in System.IO.Compression namespance. Following are the methods to Compress or Decompress the String using GZipStream Class in C#.NET.
Happy Coding! 😊
Compress the String
public static string GZipStringCompress(this string s)
{
var bytes = Encoding.Unicode.GetBytes(s);
using (var msi = new MemoryStream(bytes))
using (var mso = new MemoryStream())
{
using (var gs = new GZipStream(mso, CompressionMode.Compress))
{
msi.CopyTo(gs);
}
return Convert.ToBase64String(mso.ToArray());
}
}
Decompress the String
public static string GZipStringDecompress(this string s)
{
var bytes = Convert.FromBase64String(s);
using (var msi = new MemoryStream(bytes))
using (var mso = new MemoryStream())
{
using (var gs = new GZipStream(msi, CompressionMode.Decompress))
{
gs.CopyTo(mso);
}
return Encoding.Unicode.GetString(mso.ToArray());
}
}
We can also GZip the files uing GZipStream class. GZip compressed files will have the extension '.gz'.
Note: For now, GZipStream doesn't support multiple files to a same '.gz' file.
Compress the File
public void GZipFileCompress(string filepath)
{
FileInfo fileToGZip = new FileInfo(filepath);
FileInfo gZipFile = new FileInfo(string.Concat(fileToGZip.FullName, ".gz"));
using (FileStream fileToGZipStream = fileToGZip.OpenRead())
{
using (FileStream gZipFileStream = gZipFile.Create())
{
using (GZipStream gzipStream = new GZipStream(gZipFileStream, CompressionMode.Compress))
{
fileToGZipStream.CopyTo(gzipStream);
}
}
}
}
Decompress the File
public void GZipFileDecompress(string filepath)
{
FileInfo gZipFile = new FileInfo(filepath);
FileInfo decompressedFile = new FileInfo(string.Concat(gZipFile.FullName, ".txt"));
using (FileStream gZipFileStream = gZipFile.OpenRead())
{
using (FileStream decompressedFileStream = File.Create(decompressedFile))
{
using (GZipStream gzipStream = new GZipStream(gZipFileStream, CompressionMode.Decompress))
{
gzipStream.CopyTo(decompressedFileStream);
}
}
}
}
0 comments:
Post a Comment