System.IO.Compression 命名空間
注意:此命名空間在 .NET Framework 2.0 版中是新增的,。
System.IO.Compression 命名空間包含提供基本的流壓縮和解壓縮服務(wù)的類,。
壓縮字符串
public static string ZipString(string unCompressedString) { byte[] bytData = System.Text.Encoding.UTF8.GetBytes(unCompressedString); MemoryStream ms = new MemoryStream(); Stream s = new GZipStream(ms, CompressionMode.Compress); s.Write(bytData, 0, bytData.Length); s.Close(); byte[] compressedData = (byte[])ms.ToArray(); return System.Convert.ToBase64String(compressedData, 0, compressedData.Length); }
解壓縮字符串
public static string UnzipString(string unCompressedString) { System.Text.StringBuilder uncompressedString = new System.Text.StringBuilder(); byte[] writeData = new byte[4096];
byte[] bytData = System.Convert.FromBase64String(unCompressedString); int totalLength = 0; int size = 0;
Stream s = new GZipStream(new MemoryStream(bytData), CompressionMode.Decompress); while (true) { size = s.Read(writeData, 0, writeData.Length); if (size > 0) { totalLength += size; uncompressedString.Append(System.Text.Encoding.UTF8.GetString(writeData, 0, size)); } else { break; } } s.Close(); return uncompressedString.ToString(); } 壓縮文件
public static bool AddZip(string srcFilename, string zipFileName) { if (!File.Exists(srcFilename)) return false; bool result; FileStream fs = null, output = null; GZipStream zipStream = null; try { fs = new FileStream(srcFilename, FileMode.Open, FileAccess.Read); byte[] buffer = new byte[fs.Length]; fs.Read(buffer, 0, buffer.Length); fs.Close(); if (!File.Exists(zipFileName)) { output = File.Create(zipFileName); zipStream = new GZipStream(output, CompressionMode.Compress); zipStream.Write(buffer, 0, buffer.Length); result = true; } else { result = false; } } catch(Exception) { result = false; } finally { if (zipStream != null) { zipStream.Flush(); zipStream.Close(); } } return result;
|