59 lines
2.1 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|
|
}
|