{
#region 实现
string myExtractLocation = extractLocation;
if (myExtractLocation == "")
{
myExtractLocation = Directory.GetCurrentDirectory();
}
if (!myExtractLocation.EndsWith("\\"))
{
myExtractLocation = myExtractLocation + "\\";
}
ZipInputStream s = new ZipInputStream(File.OpenRead(zipFileName));
s.Password = password;
ZipEntry theEntry;
while ((theEntry = s.GetNextEntry()) != null)
{
string directoryName = "";
string pathToZip = "";
pathToZip = theEntry.Name;
if (pathToZip != "")
directoryName = Path.GetDirectoryName(pathToZip) + "\\";
string fileName = Path.GetFileName(pathToZip);
Directory.CreateDirectory(myExtractLocation + directoryName);
if (fileName != "")
{
if ((File.Exists(myExtractLocation + directoryName + fileName) && overWrite) ||
(!File.Exists(myExtractLocation + directoryName + fileName)))
{
FileStream streamWriter = File.Create(myExtractLocation + directoryName + fileName);
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();
#endregion
File.Delete(zipFileName);
}