• C#代码控制 zip rar 解压缩


    首先 解压ZIP的方法:

    #region 解压ZIP
            /// <summary>
            /// 解压ZIP
            /// </summary>
            /// <param name="zipFilePath">解压文件的物理地址</param>
            /// <param name="savePath">存放解压后的文件物理地址</param>
            /// <returns></returns>
            private static bool UnZipFile(string zipFilePath, string savePath, out string Message)
            {
                Message = "";
                bool result = true;
                try
                {
                    using (ZipInputStream s = new ZipInputStream(File.OpenRead(zipFilePath)))
                    {
                        ZipEntry theEntry;
                        while ((theEntry = s.GetNextEntry()) != null)
                        {
                            Console.WriteLine(theEntry.Name);
                            string directoryName = Path.GetDirectoryName(theEntry.Name);
                            string fileName = Path.GetFileName(theEntry.Name);
                            if (directoryName.Length > 0)
                            {
                                Directory.CreateDirectory(savePath + "/" + directoryName);
                            }
                            if (fileName != String.Empty)
                            {
                                using (FileStream streamWriter = File.Create(savePath + "/" + theEntry.Name))
                                {
                                    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;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                catch(Exception ex)
                {
                    result = false;
                    Message = ex.Message;
                }
                return result;
            }
            #endregion

    然后就是解压rar的方法:

    #region 解压RAR
            /// <summary>
            /// 解压RAR
            /// </summary>
            /// <param name="destPath">解压的文件名</param>
            /// <param name="savePath">解压的文件地址</param>
            /// <returns></returns>
            public bool UnRar(string fileRarName, string savePath, out string Message)
            {
                Message = "";
                bool result = false;
                ProcessStartInfo startinfo = new ProcessStartInfo(); ;
                Process process = new Process();
                string rarName = fileRarName; //将要解压缩的 .rar 文件名(包括后缀)  
                string path = savePath; //文件解压路径(绝对)  
                string rarPath = savePath;  //将要解压缩的 .rar 文件的存放目录(绝对路径)  
                string rarexe = "WinRAR.exe";  //WinRAR安装位置  
    
                try
                {
                    //解压缩命令,相当于在要压缩文件(rarName)上点右键->WinRAR->解压到当前文件夹  
                    string cmd = string.Format("x {0} {1} -y",
                                        rarName,
                                        path);
                    startinfo.FileName = rarexe;
                    startinfo.Arguments = cmd;                          //设置命令参数  
                    startinfo.WindowStyle = ProcessWindowStyle.Hidden;  //隐藏 WinRAR 窗口  
    
                    startinfo.WorkingDirectory = rarPath;
                    process.StartInfo = startinfo;
                    process.Start();
                    process.WaitForExit(); //无限期等待进程 winrar.exe 退出  
                    if (process.HasExited)
                    {
                        result = true;
                    }
                }
                catch (Exception ex)
                {
                    result = false;
                    Message = ex.Message;
                    Framework.Core.Logging.LogManager.GetCurrentClassLogger().Fatal("在线阅读电子会刊异常:" + ex.ToString());
                }
                finally
                {
                    process.Dispose();
                    process.Close();
                }
                return result;
            }
            #endregion

    然后就是一些文件夹之间的操作:

    /// <summary>
            /// 删除所有文件(文件夹)包括本身
            /// </summary>
            /// <param name="dir"></param>
            public void DeleteFolderAll(string dir)
            {
                if (Directory.Exists(dir)) //如果存在这个文件夹删除之   
                {
                    foreach (string d in Directory.GetFileSystemEntries(dir))
                    {
                        if (File.Exists(d))
                            File.Delete(d); //直接删除其中的文件                          
                        else
                            DeleteFolderAll(d); //递归删除子文件夹   
                    }
                    Directory.Delete(dir, true); //删除已空文件夹                   
                }
            }  
    
            /// <summary>
            /// 删除某个路径下的所有东西
            /// </summary>
            /// <param name="dirPath"></param>
            public static void DeleteFolder(string dirPath)
            {
                if (Directory.Exists(dirPath))
                {
                    foreach (string content in Directory.GetFileSystemEntries(dirPath))
                    {
                        if (Directory.Exists(content))
                        {
                            Directory.Delete(content, true);
                        }
                        else if (File.Exists(content))
                        {
                            File.Delete(content);
                        }
                    }
                }
            }  

    好了,结束!

  • 相关阅读:
    E3-1230和E3-1230 V2有多神?
    自己制作 SPx N合1 自动安装盘(x86)
    ARP防火墙绑定网关MAC地址预防ARP攻击和P2P终结者
    完全备份、差异备份和增量备份的权威解释!!!
    Win7 SP1语言包微软官方下载地址及使用方法 2
    Windows 7 不同安装模式简要区别(图解)
    Windows PE3.0制作方法(从Win7中提取制作)
    摄影初学者挑选相机的常见问题 FAQ
    提升域用户帐户在本地计算机上的权限
    Oracle重置序列
  • 原文地址:https://www.cnblogs.com/wt-vip/p/6268181.html
Copyright © 2020-2023  润新知