/// <summary>
/// 功能:解压缩
/// 作者:wthrose
/// </summary>
/// <param name="FileName"></param>
/// <param name="OutFileName"></param>
public void GZipDecompress(string FileName, string OutFileName)
{
FileStream infile, outfile;
try
{
infile = new FileStream(FileName, FileMode.Open, FileAccess.Read, FileShare.Read);
byte[] buffer = new byte[infile.Length];
int count = infile.Read(buffer, 0, buffer.Length);
infile.Close();
MemoryStream ms = new MemoryStream();
ms.Write(buffer, 0, buffer.Length);
ms.Position = 0;
GZipStream decompressedzipStream = new GZipStream(ms, CompressionMode.Decompress, true);
MemoryStream output = new MemoryStream();
byte[] buff = new byte[4096];
int read = -1;
read = decompressedzipStream.Read(buff, 0, buff.Length);
while (read > 0)
{
output.Write(buff, 0, read);
read = decompressedzipStream.Read(buff, 0, buff.Length);
}
decompressedzipStream.Close();
outfile = new FileStream(OutFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
outfile.Write(output.ToArray(), 0, output.ToArray().Length);
outfile.Close();
ms.Close();
}
catch(Exception ex)
{
//this.listBox1.Items.Add(ex.ToString());
}
}
/// <summary>
/// 功能:压缩
/// 作者:wthorse
/// </summary>
/// <param name="FileName"></param>
/// <param name="OutFileName"></param>
public void GZipCompress(string FileName,string OutFileName)
{
FileStream infile,outfile;
try
{
infile = new FileStream(FileName, FileMode.Open, FileAccess.Read, FileShare.Read);
byte[] buffer = new byte[infile.Length];
int count = infile.Read(buffer, 0, buffer.Length);
if (count != buffer.Length)
{
infile.Close();
//this.listBox1.Items.Add("读取文件失败");
return;
}
infile.Close();
MemoryStream ms = new MemoryStream();
GZipStream compressedzipStream = new GZipStream(ms, CompressionMode.Compress, true);
compressedzipStream.Write(buffer, 0, buffer.Length);
compressedzipStream.Close();
outfile = new FileStream(OutFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
outfile.Write(ms.ToArray(), 0, ms.ToArray().Length);
outfile.Close();
ms.Close();
}
catch(Exception ex)
{
//this.listBox1.Items.Add(ex.ToString());
}