C# DataSet String Byte[] 压缩 解压缩 代码 实例
添加引用 using System.IO.Compression;
代码如下:
以下是代码片段:
-
-
-
- public byte[] Compress(DataSet dt)
- {
- try
- {
-
- MemoryStream ms = new MemoryStream();
-
- dt.WriteXml(ms, XmlWriteMode.WriteSchema);
-
- byte[] bsrc = ms.ToArray();
-
- ms.Close();
- ms.Dispose();
-
- ms = new MemoryStream();
- ms.Position = 0;
-
- DeflateStream zipStream = new DeflateStream(ms, CompressionMode.Compress);
- zipStream.Write(bsrc, 0, bsrc.Length);
- zipStream.Close();
- zipStream.Dispose();
- return ms.ToArray();
- }
- catch
- {
- return null;
- }
- }
-
-
-
- public byte[] Compress(string str)
- {
- try
- {
-
- MemoryStream ms = new MemoryStream();
- StreamWriter sw = new StreamWriter(ms);
- sw.Write(str);
- sw.Close();
- byte[] bsrc = ms.ToArray();
- ms.Close();
- ms.Dispose();
- ms = new MemoryStream();
- ms.Position = 0;
-
- DeflateStream zipStream = new DeflateStream(ms, CompressionMode.Compress);
- zipStream.Write(bsrc, 0, bsrc.Length);
- zipStream.Close();
- zipStream.Dispose();
- return ms.ToArray();
- }
- catch
- {
- return null;
- }
- }
-
-
-
- public DataSet DeCompress(byte[] arrbts)
- {
- try
- {
-
- MemoryStream ms = new MemoryStream();
- ms.Write(arrbts, 0, ArrBytes.Length);
- ms.Position = 0;
-
- DeflateStream ZipStream = new DeflateStream(ms, CompressionMode.Decompress);
- MemoryStream UnzipStream = new MemoryStream();
- byte[] sDecompressed = new byte[128];
- while (true)
- {
- int bytesRead = ZipStream.Read(sDecompressed, 0, 128);
- if (bytesRead == 0)
- {
- break;
- }
- UnzipStream.Write(sDecompressed, 0, bytesRead);
- }
- ZipStream.Close();
- ms.Close();
- UnzipStream.Position = 0;
- DataSet ds = new DataSet();
-
- ds.ReadXml(UnzipStream);
- ds.AcceptChanges();
- return ds;
- }
- catch
- { return null; }
- }
-
-
-
- public string DeCompressString(byte[] arrbts)
- {
- try
- {
- MemoryStream ms = new MemoryStream();
- ms.Write(arrbts, 0, ArrBytes.Length);
- ms.Position = 0;
- DeflateStream ZipStream = new DeflateStream(ms, CompressionMode.Decompress);
- MemoryStream UnzipStream = new MemoryStream();
- byte[] sDecompressed = new byte[128];
- while (true)
- {
- int bytesRead = ZipStream.Read(sDecompressed, 0, 128);
- if (bytesRead == 0)
- {
- break;
- }
- UnzipStream.Write(sDecompressed, 0, bytesRead);
- }
- ZipStream.Close();
- ms.Close();
- UnzipStream.Position = 0;
- StreamReader sr = new StreamReader(UnzipStream);
- return sr.ReadToEnd();
- }
- catch
- {
- return "";
- }
- }
| |