50 lines
1.8 KiB
C#
50 lines
1.8 KiB
C#
using System.IO.Compression;
|
|
using System.Text;
|
|
|
|
namespace Models.Helper;
|
|
|
|
public static class CompressionHelper
|
|
{
|
|
public static void CompressFile(string sourceFile, string targetFile)
|
|
{
|
|
using FileStream originalFileStream = new(sourceFile, FileMode.Open);
|
|
using FileStream compressedFileStream = File.Create($"{targetFile}.gz");
|
|
using GZipStream compressor = new(compressedFileStream, CompressionLevel.SmallestSize);
|
|
originalFileStream.CopyTo(compressor);
|
|
}
|
|
|
|
public static void DecompressFile(string sourceFile, string targetFile)
|
|
{
|
|
using FileStream compressedFileStream = new(sourceFile, FileMode.Open);
|
|
using FileStream decompressedFileStream = File.Create($"{targetFile}.gz");
|
|
using GZipStream decompressor = new(compressedFileStream, CompressionMode.Decompress);
|
|
decompressor.CopyTo(decompressedFileStream);
|
|
}
|
|
|
|
public static string CompressString(string text)
|
|
{
|
|
byte[] byteArray = Encoding.UTF8.GetBytes(text);
|
|
|
|
using MemoryStream memoryStream = new();
|
|
|
|
using (BrotliStream compressionStream = new(memoryStream, CompressionLevel.SmallestSize))
|
|
{
|
|
compressionStream.Write(byteArray, 0, byteArray.Length);
|
|
}
|
|
|
|
return Convert.ToBase64String(memoryStream.ToArray());
|
|
}
|
|
|
|
public static string DecompressString(string compressedText)
|
|
{
|
|
byte[] byteArray = Convert.FromBase64String(compressedText);
|
|
|
|
using MemoryStream memoryStream = new(byteArray);
|
|
|
|
using BrotliStream decompressionStream = new(memoryStream, CompressionMode.Decompress);
|
|
|
|
using StreamReader reader = new(decompressionStream);
|
|
|
|
return reader.ReadToEnd();
|
|
}
|
|
} |