/// <summary>
/// 解压功能(解压压缩文件到指定目录)
/// </summary>
public static string Unzip(string srcFile, string destDir) //srcFile是指要解压的文件名,destDir是指目标目录.
{
if (!File.Exists(srcFile))
{
return "找不到文件" ;
}
if (!destDir.EndsWith("\\")) destDir += "\\"; //规范目录格式
ZipInputStream zipIn = new ZipInputStream(File.OpenRead(srcFile)); //定义新的ZipInputStream类
ZipEntry entry; //定义输入压缩文件中的文件
Directory.CreateDirectory(destDir); //创建目标目录
while ((entry = zipIn.GetNextEntry()) != null) //判断是否解压完毕了
{
string fileName = entry.Name.Replace("/", "\\"); //规范文件名
if (fileName.EndsWith("\\")) Directory.CreateDirectory(destDir + fileName); //判断是目录还是文件
else if (fileName != String.Empty) //如果是文件且文件名不为空,则解压
{
FileStream streamWriter = File.Create(destDir + fileName); //定义一个FileStream
int size; //用于判断单个文件是否解压完毕
byte[] data = new byte[2048]; //定义缓冲区大小
try
{
while (true)
{
size = zipIn.Read(data, 0, data.Length); //获得这次读取的信息的长度
if (size > 0) streamWriter.Write(data, 0, size); //如果size>0,表示有信息
else break; //如果size==0,表示文件已经读取完毕
}
}
catch
{}
streamWriter.Close(); //关闭streamWriter
}
}
zipIn.Close(); //关闭zipIn
return "解压成功";
}