diff --git a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Util/Learun.Util/Web/ZipHelper.cs b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Util/Learun.Util/Web/ZipHelper.cs index e5d92ee49..dd2c1ca8b 100644 --- a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Util/Learun.Util/Web/ZipHelper.cs +++ b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Util/Learun.Util/Web/ZipHelper.cs @@ -71,5 +71,90 @@ namespace ZipOneCode.ZipProvider } } } + + /// + /// 功能:解压zip格式的文件。 + /// + /// 压缩文件路径 + /// 解压文件存放路径,为空时默认与压缩文件同一级目录下,跟压缩文件同名的文件夹 + /// 解压是否成功 + public static bool UnZip(string zipFilePath, string unZipDir) + { + try + { + if (zipFilePath == string.Empty) + { + throw new Exception("压缩文件不能为空!"); + } + if (!File.Exists(zipFilePath)) + { + throw new FileNotFoundException("压缩文件不存在!"); + } + //解压文件夹为空时默认与压缩文件同一级目录下,跟压缩文件同名的文件夹 + if (unZipDir == string.Empty) + { + unZipDir = zipFilePath.Replace(Path.GetFileName(zipFilePath), Path.GetFileNameWithoutExtension(zipFilePath)); + } + if (!unZipDir.EndsWith("/")) + { + unZipDir += "/"; + } + if (!Directory.Exists(unZipDir)) + { + Directory.CreateDirectory(unZipDir); + } + using (var s = new ZipInputStream(File.OpenRead(zipFilePath))) + { + + ZipEntry theEntry; + + while ((theEntry = s.GetNextEntry()) != null) + { + string directoryName = Path.GetDirectoryName(theEntry.Name); + string fileName = Path.GetFileName(theEntry.Name); + if (!string.IsNullOrEmpty(directoryName)) + { + Directory.CreateDirectory(unZipDir + directoryName); + } + if (directoryName != null && !directoryName.EndsWith("/")) + { + } + + if (fileName != String.Empty) + { + using (FileStream streamWriter = File.Create(unZipDir + theEntry.Name)) + { + + int size; + 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(); + } + return true; + } + catch (Exception e) + { + + return false; + } + + } + + } } \ No newline at end of file