C#自定义字符串压缩和解压缩的方法

本文实例讲述了C#自定义字符串压缩和解压缩的方法。分享给大家供大家参考。具体如下:

class ZipLib
{
 public static string Zip(string value)
 {
  //Transform string into byte[]
  byte[] byteArray = new byte[value.Length];
  int indexBA = 0;
  foreach (char item in value.ToCharArray())
  {
 byteArray[indexBA++] = (byte)item;
  }
  //Prepare for compress
  System.IO.MemoryStream ms = new System.IO.MemoryStream();
  System.IO.Compression.GZipStream sw = new System.IO.Compression.GZipStream(ms,
 System.IO.Compression.CompressionMode.Compress);
  //Compress
  sw.Write(byteArray, 0, byteArray.Length);
  //Close, DO NOT FLUSH cause bytes will go missing...
  sw.Close();
  //Transform byte[] zip data to string
  byteArray = ms.ToArray();
  System.Text.StringBuilder sB = new System.Text.StringBuilder(byteArray.Length);
  foreach (byte item in byteArray)
  {
 sB.Append((char)item);
  }
  ms.Close();
  sw.Dispose();
  ms.Dispose();
  return sB.ToString();
 }
 public static string UnZip(string value)
 {
  //Transform string into byte[]
  byte[] byteArray = new byte[value.Length];
  int indexBA = 0;
  foreach (char item in value.ToCharArray())
  {
 byteArray[indexBA++] = (byte)item;
  }
  //Prepare for decompress
  System.IO.MemoryStream ms = new System.IO.MemoryStream(byteArray);
  System.IO.Compression.GZipStream sr = new System.IO.Compression.GZipStream(ms, System.IO.Compression.CompressionMode.Decompress);
  //Reset variable to collect uncompressed result
  byteArray = new byte[byteArray.Length];
  //Decompress
  int rByte = sr.Read(byteArray, 0, byteArray.Length);
  //Transform byte[] unzip data to string
  System.Text.StringBuilder sB = new System.Text.StringBuilder(rByte);
  //Read the number of bytes GZipStream red and do not a for each bytes in
  //resultByteArray;
  for (int i = 0; i < rByte; i++)
  {
 sB.Append((char)byteArray[i]);
  }
  sr.Close();
  ms.Close();
  sr.Dispose();
  ms.Dispose();
  return sB.ToString();
 }
}

代码使用方法:

string str_org="aaaaaaaaaabbbbbbbbbbbbcccccccccdddddddd";
string str_comp = ZipLib.Zip(str_org);
Console.WriteLine("str_comp:" + str_comp);
string str_uncomp = ZipLib.UnZip(str_comp);
Console.WriteLine("str_uncomp:" + str_uncomp);
Console.ReadLine();

希望本文所述对大家的C#程序设计有所帮助。

(0)

相关推荐

  • C# 利用ICSharpCode.SharpZipLib实现在线压缩和解压缩

    压缩包制作也是很多项目中需要用到的功能.比如有大量的文件(假设有10000个)需要上传,1个1个的上传似乎不太靠谱(靠,那得传到什么时候啊?),这时我们可以制作一个压缩包zip,直接传这个文件到服务器端,然后在服务器目录解压,释放里面的文件. 这里我们选用ICSharpCode.SharpZipLib这个类库来实现我们的需求. 下载地址:http://icsharpcode.github.io/SharpZipLib/ 该组件支持.NET 1.1, .NET 2.0 (3.5, 4.0), .N

  • asp.net C#实现解压缩文件的方法

    本文实例讲述了asp.net C#实现解压缩文件的方法.一共给大家介绍了三段代码,一个是简单的解压缩单个zip文件,后一个可以解压批量的大量的但需要调用ICSharpCode.SharpZipLib.dll类了,最后一个比较实例可压缩也可以解压缩了分享给大家供大家参考.具体如下: 解压缩单个文件: 复制代码 代码如下: using System.IO; using System.IO.Compression; string sourceFile=@"D:2.zip"; string d

  • C#使用GZipStream解压缩数据文件的方法

    本文实例讲述了C#使用GZipStream解压缩数据文件的方法.分享给大家供大家参考.具体分析如下: GZipStream用于从一个流读取数据写入到另一个流,GZipStream不能写入到其它的资源,比如文件或者内存,只能从流到流. GZipStream使用的一般流程如下: 打开一个现有的文件  打开/创建输出文件  创建GZipStream对象  逐字节读源文件,并把它传递到GZipStream  使用GZipStream写入到输出文件流 String sourcefilename = FIL

  • C#实现的文件压缩和解压缩类

    本文实例讲述了C#实现的文件压缩和解压缩类.分享给大家供大家参考.具体分析如下: 这个C#代码包含了几个类,封装了文件压缩和解压缩常用的方法,包括直接通过代码进行压缩,也有调用winrar对文件进行压缩的 using System; using System.IO; using System.Diagnostics; using Microsoft.Win32; using ICSharpCode.SharpZipLib.Checksums; using ICSharpCode.SharpZip

  • C#实现压缩和解压缩的方法示例【Gzip和Zip方式】

    本文实例讲述了C#实现压缩和解压缩的方法.分享给大家供大家参考,具体如下: 使用ICSharpCode.SharpZipLib.dll来压缩/解压(压缩效率比GZip要高一点) public static class ZipUtil { /// <summary> /// 压缩 /// </summary> /// <param name="param"></param> /// <returns></returns&g

  • C#实现rar压缩与解压缩文件的方法

    本文实例讲述了C#实现rar压缩与解压缩文件的方法.分享给大家供大家参考.具体分析如下: 此程序利用 WinRAR 程序对文件进行压缩,命令行语法可参考WinRAR中文帮助. /// 利用 WinRAR 进行压缩 /// </summary> /// <param name="path">将要被压缩的文件夹(绝对路径)</param> /// <param name="rarPath">压缩后的 .rar 的存放目录(

  • C#使用DeflateStream解压缩数据文件的方法

    本文实例讲述了C#使用DeflateStream解压缩数据文件的方法.分享给大家供大家参考.具体分析如下: DeflateStream方法用于从一个流中读取数据,并写入到另一个流.DeflateStream不写入数据到其它类型的资源,比如文件或者内存. DeflateStream在写入另一个流的时候,它会对数据进行压缩和解压缩. 使用DEFLATE压缩数据文件的一般过程: 打开一个现有的文件  打开/创建输出文件  创建减缩对象  逐字节读取源文件,并把它传递给DEFLATE对象  使用defl

  • C#文件流进行压缩和解压缩的方法

    本文实例讲述了C#文件流进行压缩和解压缩的方法.分享给大家供大家参考.具体实现方法如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.IO.Compression; using System.Linq; using System.Text; usi

  • C#中使用WinRAR实现加密压缩及解压缩文件

    本次示例主要实现: 1.压缩文件夹及其下文件 2.压缩文件夹下文件 3.压缩文件夹及其下文件为rar 还是 zip 4.解压缩 5.加密压缩及解加密压缩 ----------- 示例代码如下: protected void Button1_Click(object sender, EventArgs e) { string strtxtPath = "C://freezip//free.txt"; string strzipPath = "C://freezip//free.

  • C#使用WinRar命令进行压缩和解压缩操作的实现方法

    本文实例讲述了C#使用WinRar命令进行压缩和解压缩操作的实现方法.分享给大家供大家参考,具体如下: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Diagnostics; using System.IO; public partial c

  • C#实现GZip压缩和解压缩入门实例

    主要是因为GZipStream的构造函数中第一个需要传入一个Stream,第二个是指定操作方式:压缩还是解压缩. 当时的疑问点主要有: 1.我传入的Stream是包含未压缩数据的Stream吗?2.我解压时是从一个压缩流中读取数据后再用GZipStream解压吗? 出现以上两点疑问,完全是我将GZipStream的用法理解反了. 其实GZipStream里面存的是已经压缩过的数据流,传入的Stream是作为基础Stream传入,如果要压缩,那你就可以传一个空的Stream进去,如果要解压,就将包

  • c#调用winrar解压缩文件代码分享

    复制代码 代码如下: using Microsoft.Win32;using System.Diagnostics;压缩string the_rar;RegistryKey the_Reg;object the_Obj;string the_Info;ProcessStartInfo the_StartInfo;Process the_Process;try{the_Reg = Registry.ClassesRoot.OpenSubKey(@"Applications\WinRAR.exe\S

  • Windows系统中C#调用WinRAR来压缩和解压缩文件的方法

    过程说明都在注释里,我们直接来看代码: 压缩: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using ICSharpCode.SharpZipLib.Zip; using System.Diagnostics; public class winrar { #region 压缩文件 /// <summary> /// 压缩文件 ///

随机推荐