welcome to .net developement bar

文件压缩代码(为.Net2.0新增)

 System.IO.Compression 命名空间
  注意:此命名空间在 .NET Framework 
2.0 版中是新增的。

  System.IO.Compression 命名空间包含提供基本的流压缩和解压缩服务的类。

压缩字符串

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;
}

posted @ 2007-06-02 12:51  endif  阅读(283)  评论(0)    收藏  举报