c#解压文件的实例方法
发布时间:2020-12-15 05:58:09 所属栏目:百科 来源:网络整理
导读:复制代码 代码如下: #region 解压 文件 zip 格式 rar 格式 /// summary ///解压文件 /// /summary /// param name="fileFromUnZip"解压前的文件路径(绝对路径)/param /// param name="fileToUnZip"解压后的文件目录(绝对路径)/param public static void
复制代码 代码如下: #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();//rar工具的安装路径 必须要安装 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,data.Length); if (size > 0) { streamWriter.Write(data,size); } else { break; } } streamWriter.Close(); } } inputStream.Close(); } #endregion (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |