#region 解压 文件 zip 格式 rar 格式 /// <summary> ///解压文件 /// </summary> /// <param name="fileFromUnZip">解压前的文件路径(绝对路径)</param> /// <param name="fileToUnZip">解压后的文件目录(绝对路径)</param> public static void UnpackFile(string fileFromUnZip, string fileToUnZip) { //获取压缩类型 string unType = fileFromUnZip.Substring(fileFromUnZip.LastIndexOf(".") + 1, 3).ToLower(); switch (unType) { case "rar": UnRar(fileFromUnZip, fileToUnZip); break; case "zip": UnZip(fileFromUnZip, fileToUnZip); break; } } //解压rar格式的文件 private static void UnRar(string fileFromUnZip, string fileToUnZip) { using (Process Process1 = new Process())// 开启一个进程 执行解压工作 { string ServerDir = ConfigurationManager.AppSettings["UnpackFile"].ToString();//WinRAR的安装路径(必须要安装 WinRAR) //例于:C:Program Files (x86)WinRARRAR.exe Process1.StartInfo.UseShellExecute = false; Process1.StartInfo.RedirectStandardInput = true; Process1.StartInfo.RedirectStandardOutput = true; Process1.StartInfo.RedirectStandardError = true; Process1.StartInfo.CreateNoWindow = true; Process1.StartInfo.FileName = ServerDir; Process1.StartInfo.Arguments = " x -inul -y " + fileFromUnZip + " " + fileToUnZip; Process1.Start();//解压开始 Process1.WaitForExit(); Process1.Close(); } } // 解压zip 文件 public static void UnZip(string fileFromUnZip, string fileToUnZip) { ZipInputStream inputStream = new ZipInputStream(File.OpenRead(fileFromUnZip)); ZipEntry theEntry; while ((theEntry = inputStream.GetNextEntry()) != null) { fileToUnZip += "/"; string fileName = Path.GetFileName(theEntry.Name); string path = Path.GetDirectoryName(fileToUnZip) + "/"; // Directory.CreateDirectory(path);//生成解压目录 if (fileName != String.Empty) { FileStream streamWriter = File.Create(path + fileName);//解压文件到指定的目录 int size = 2048; byte[] data = new byte[2048]; while (true) { size = inputStream.Read(data, 0, data.Length); if (size > 0) { streamWriter.Write(data, 0, size); } else { break; } } streamWriter.Close(); } } inputStream.Close(); } #endregion
所需工具:
此外,用zip解压的方法必须要调用第三方的工具。即ICSharpCode.SharpZipLib.dll,到时候在项目中引用一下就行了。