当前位置:首页 > 教程 > ASP.NET > C#如何使用7-zip解压文件(控制台应用程序演示)

C#如何使用7-zip解压文件(控制台应用程序演示)

当压缩文件过多的时候,我们不能手动一个个去解压,所以我们需要一个解压程序来实现快速压缩,本文就演示如果使用C#调用7zip来解压文件。

C#如何使用7-zip解压文件

来解压程序前,你需要安装7-zip,这是一个免费的解压缩软件,是国际通用的。然后我们就可以开始我们的程序了。

首先我们需要一个Helper程序来实现压缩,看下面的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
 
namespace DailyBackup
{
    public class ZipHelper
    {
        // Fields
        private string _7zInstallPath = "";
 
        // Methods
        public ZipHelper(string str7zInstallPath)
        {
            this._7zInstallPath = str7zInstallPath;
        }
 
        /// <summary>
        /// 压缩文件夹目录
        /// </summary>
        /// <param name="strInDirectoryPath">指定需要压缩的目录,如C:\test\,将压缩test目录下的所有文件</param>
        /// <param name="strOutFilePath">压缩后压缩文件的存放目录</param>
        public void CompressDirectory(string strInDirectoryPath, string strOutFilePath)
        {
            Process process = new Process();
            process.StartInfo.FileName = this._7zInstallPath;
            process.StartInfo.Arguments = " a -t7z " + strOutFilePath + " " + strInDirectoryPath + " -r";
            //隐藏DOS窗口
            process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            process.Start();
            process.WaitForExit();
            process.Close();
        }
 
        /// <summary>
        /// 压缩文件
        /// </summary>
        /// <param name="strInFilePath">指定需要压缩的文件,如C:\test\demo.xlsx,将压缩demo.xlsx文件</param>
        /// <param name="strOutFilePath">压缩后压缩文件的存放目录</param>
        public void CompressFile(string strInFilePath, string strOutFilePath)
        {
            Process process = new Process();
            process.StartInfo.FileName = this._7zInstallPath;
            process.StartInfo.Arguments = " a -t7z " + strOutFilePath + " " + strInFilePath + "";
            //隐藏DOS窗口
            process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            process.Start();
            process.WaitForExit();
            process.Close();
        }
 
        /// <summary>
        /// 解压缩
        /// </summary>
        /// <param name="strInFilePath">压缩文件的路径</param>
        /// <param name="strOutDirectoryPath">解压缩后文件的路径</param>
        public void DecompressFileToDestDirectory(string strInFilePath, string strOutDirectoryPath)
        {
            Process process = new Process();
            process.StartInfo.FileName = this._7zInstallPath;
            process.StartInfo.Arguments = " x " + strInFilePath + " -o" + strOutDirectoryPath + " -r ";
            //隐藏DOS窗口
            process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            process.Start();
            process.WaitForExit();
            process.Close();
        }
 
    }
}

其中的构造函数参数_7zInstallPath就是7zip的安装目录下,7z.exe文件所在的路径。

然后我们还需要一个中间类来包装调用7zip的接口。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
 
namespace DailyBackup
{
    public static class UZip
    {
        public static void Unzip(string compressFilePhysicalPath, string uZipFilePhysicalPath)
        {
            DirectoryInfo DirecInfo = new DirectoryInfo(compressFilePhysicalPath);
            if (DirecInfo.Exists)
            {
                foreach (FileInfo fileInfo in DirecInfo.GetFiles("*.zip"))
                {
                    try
                    {
                        var zipHleper = new ZipHelper("7zip安装目录的7z.exe路径");
                        zipHleper.DecompressFileToDestDirectory(fileInfo.FullName, uZipFilePhysicalPath);
                    }
                    catch(Exception e)
                    {
                    }
                }
            }
        }
    }
}

上面的代码我们写了一个压缩程序的静态类,Unzip方法的参数分别是压缩文件所在的目录,和把压缩文件解压后放置的目录。

所以我们在主程序可以这样用了:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.DirectoryServices;
using System.Diagnostics;
using Microsoft.Win32;
using System.Configuration;
using System.IO;
using System.Globalization;
using System.Threading;
using DailyBackup;
 
namespace Backup
{
    /// <summary>
    /// 备份IIS网站以及数据库
    /// </summary>
    class Program
    {
        /// <summary>
        /// 压缩文件存放路径
        /// </summary>
        public static readonly string compressFilePhysicalPath = ConfigurationManager.AppSettings["CompressFilePhysicalPath"];
 
        // <summary>
        /// 解压文件存放路径
        /// </summary>
        public static readonly string uZipFilePhysicalPath = ConfigurationManager.AppSettings["UZipFilePhysicalPath"];
 
 
        /// <summary>
        /// Mian method.
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
 
            try
            {
                UZip.Unzip(compressFilePhysicalPath, uZipFilePhysicalPath);
            }
            catch(Exception e)
            {
                Log.LogInfo(e.Message);
            }
 
        }
    }
}
  • << C#怎样获取object对象的属性值
  • jQuery动态创建Form表单并提交 >>
  • 作者:
    除非注明,本文原创:知道91,欢迎转载!转载请以链接形式注明本文地址,谢谢。
    原文链接:http://www.zhidao91.com/csharp-7zip-extract-file/

    相关文章 近期热评 最新文章

    • oracle数据库相关操作注意事项
      修改Oracle SGA(共享内存) 很多网站说修改Oracle的内存通过命令 如果你这么做了,那么恭喜你,你的Oracle数据库无法启动了。如果你已经这么做了,恢复Oracle启动的方...
    • 使用微信JDK实现微信接口签名验证
      要使用微信的接口必须在绑定的域名下测试;签名必须先向微信请求到access_token,然后用access_token再去请求jsapi_ticket,最后用jsapi_ticket和相关的参数按照ASCII码...
    • ABP开发指南系列教程(2) – 多层架构...
      为了减少复杂性和提高代码的可重用性,采用分层架构是一种被广泛接受的技术。为了实现分层的体系结构,ABP遵循DDD(领域驱动设计)的原则,将工程分为四个层: 展现层(...
    • ABP开发指南系列教程(1) – 入...
      ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称。 ASP.NET Boilerplate是一个用最佳实践和流行技术开发现代WEB应用程序的新起点,它旨在成为一个通用的WE...
    • Windows下 JIRA + Agile + Mysql 破解...
      本文讲述了Windows下 JIRA + Agile + Mysql 破解安装示例教程
    • c#类的构造函数继承关系示例剖析
      本文通过示例代码讲解了c#子类的构造函数与父类的关系,子类怎样集成父类的构造函数的。