数据压缩

ClownFish为数据压缩提供了便捷的扩展方法

/// <summary>
/// GZIP压缩相关的工具方法
/// </summary>
public static class GzipHelper
{
	/// <summary>
	/// 用GZIP压缩一个字符串,并以BASE64字符串的形式返回压缩后的结果
	/// </summary>
	/// <param name="input"></param>
	/// <returns></returns>
	public static string Compress(string input)


	/// <summary>
	/// 用GZIP解压缩一个BASE64字符串
	/// </summary>
	/// <param name="base64"></param>
	/// <returns></returns>
	public static string Decompress(string base64)


	/// <summary>
	/// 将一个文本转指定编码后做Gzip压缩
	/// </summary>
	/// <param name="text"></param>
	/// <param name="encoding">默认UTF8</param>
	/// <returns></returns>
	public static byte[] ToGzip(this string text, Encoding encoding = null)


	/// <summary>
	/// 用Gzip压缩格式压缩一个二进制数组
	/// </summary>
	/// <param name="input"></param>
	/// <returns></returns>
	public static byte[] ToGzip(this byte[] input)


	/// <summary>
	/// 解压缩一个二进制数组
	/// </summary>
	/// <param name="input"></param>
	/// <returns></returns>
	public static byte[] UnGzip(this byte[] input)
}



ZIP文件压缩

示例代码

public void 将ZIP文件释放到指定目录()
{
	string zipPath = @"D:\my-github\bin.zip";
	string destPath = @"D:\test";

	ZipHelper.ExtractFiles(zipPath, destPath);
}

public void 在内存中读取ZIP文件()
{
	string zipPath = @"D:\my-github\bin.zip";

	var data = ZipHelper.Read(zipPath);

	// 结果是一个元组LIST
	// 每个元组中,Item1 就是压缩包内的文件名,Item2 就是文件内容。
	// 如果需要读取某个文件,可以从LIST中查找
}

public void 将指定目录打包成ZIP文件_含子目录()
{
	string srcPath = @"D:\test";
	string zipPath = @"D:\my-github\bin.zip";

	ZipHelper.CompressDirectory(srcPath, zipPath);
}

public void 将内存数据打包成ZIP文件()
{
	List<ZipItem> data = null;    // 需要准备好这个结构
	string zipPath = @"D:\my-github\bin.zip";

	ZipHelper.Compress(data, zipPath);
}