1
0
mirror of synced 2024-11-27 21:10:48 +01:00
TaikoSoundEditor/Commons/IO/GZ.cs
2023-10-01 19:40:41 +03:00

59 lines
2.1 KiB
C#

using ICSharpCode.SharpZipLib.GZip;
using System.IO;
using System.IO.Compression;
using System.Text;
using TaikoSoundEditor.Commons.Utils;
namespace TaikoSoundEditor.Commons.IO
{
internal class GZ
{
public static string DecompressBytes(byte[] bytes)
{
Logger.Info("GZ Decompressing bytes");
using (MemoryStream ms = new MemoryStream(bytes))
using (GZipStream decompressionStream = new GZipStream(ms, CompressionMode.Decompress))
using (StreamReader reader = new StreamReader(decompressionStream))
return reader.ReadToEnd();
}
public static string DecompressString(string gzPath)
{
Logger.Info("GZ Decompressing string");
using (FileStream originalFileStream = File.OpenRead(gzPath))
using (GZipStream decompressionStream = new GZipStream(originalFileStream, CompressionMode.Decompress))
using (StreamReader reader = new StreamReader(decompressionStream))
return reader.ReadToEnd();
}
public static byte[] DecompressBytes(string gzPath)
{
Logger.Info("GZ Decompressing bytes");
using (FileStream originalFileStream = File.OpenRead(gzPath))
using (GZipStream decompressionStream = new GZipStream(originalFileStream, CompressionMode.Decompress))
using (MemoryStream ms = new MemoryStream())
{
decompressionStream.CopyTo(ms);
return ms.ToArray();
}
}
public static byte[] CompressToBytes(string content)
{
Logger.Info("GZ Compressing bytes");
var uncompressed = Encoding.UTF8.GetBytes(content);
using (MemoryStream outStream = new MemoryStream())
{
using (GZipOutputStream gzoStream = new GZipOutputStream(outStream))
{
gzoStream.SetLevel(5);
gzoStream.Write(uncompressed, 0, uncompressed.Length);
}
return outStream.ToArray();
}
}
}
}