在.NET 2.0中可以使用SharpZipLib这个开源的DLL来轻松地实现解压缩Zip文件和Gz文件的工作。
关于SharpZipLib可以此处下载。
下面来介绍一下具体的代码:
1. 解压Zip:
命名空间:ICSharpCode.SharpZipLib.Zip
ZipInputStream s = new ZipInputStream(File.OpenRead(file));
ZipEntry theEntry;
while ((theEntry = s.GetNextEntry()) != null)
{
string directoryName = Path.GetDirectoryName(theEntry.Name);
string fileName = Path.GetFileName(theEntry.Name);
if (directoryName != String.Empty)
Directory.CreateDirectory(dir + directoryName);
if (fileName != String.Empty)
{
FileStream streamWriter = File.Create(dir + theEntry.Name);
int size = 2048;
byte[] data = new byte[2048];
while (true)
{
size = s.Read(data, 0, data.Length);
if (size > 0)
{
streamWriter.Write(data, 0, size);
}
else
{
break;
}
}
streamWriter.Close();
}
}
s.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
其中:
file表示Zip文件的路径和文件名。
dir表示解压的路径。
2. 解压Gz:
命名空间:ICSharpCode.SharpZipLib.GZip
GZipInputStream s = new GZipInputStream(File.OpenRead(file));
FileStream streamWriter = File.Create(dir);
int size = 2048;
byte[] data = new byte[2048];
while (true)
{
size = s.Read(data, 0, data.Length);
if (size > 0)
{
streamWriter.Write(data, 0, size);
}
else
{
break;
}
}
streamWriter.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
其中:
file表示Gz文件的路径和文件名。
dir表示解压的路径和文件名。
PS: 在windows NT中可以使用7-ZIP这个工具将文件压缩成Gz格式。