c# - 如何使用c#制作完整文件夹的rar文件

标签 c# process winrar

我有制作.rar文件的程序。

代码

    public static void RarFilesT(string rarPackagePath, Dictionary<int, string> accFiles)
    {
        string[] files = new string[accFiles.Count];
        int i = 0;
        foreach (var fList_item in accFiles)
        {
            files[i] = "\"" + fList_item.Value;
            i++;
        }
        string fileList = string.Join("\" ", files);
        fileList += "\"";
        System.Diagnostics.ProcessStartInfo sdp = new System.Diagnostics.ProcessStartInfo();
        string cmdArgs = string.Format("A {0} {1} -ep",
            String.Format("\"{0}\"", rarPackagePath),
            fileList);
        sdp.ErrorDialog = true;
        sdp.UseShellExecute = true;
        sdp.Arguments = cmdArgs;
        sdp.FileName = rarPath;//Winrar.exe path
        sdp.CreateNoWindow = false;
        sdp.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
        System.Diagnostics.Process process = System.Diagnostics.Process.Start(sdp);
        process.WaitForExit();
    }

这个生产者需要一个文件列表的字符串数组来制作 rar 文件。 谁能告诉我如何制作包含子文件夹和文件的完整文件夹的 rar。 对不起 1 个错误,我还需要从给定文件夹中选择扩展文件。

最佳答案

更新函数

    /// <summary>
    /// Package files. (Build Rar File)
    /// </summary>
    /// <param name="rarPackagePath">Rar File Path</param>
    /// <param name="accFiles">List Of Files To be Package</param>
    public static string RarFiles(string rarPackagePath,
        Dictionary<int, string> accFiles)
    {
        string error = "";
        try
        {
            string[] files = new string[accFiles.Count];
            int i = 0;
            foreach (var fList_item in accFiles)
            {
                files[i] = "\"" + fList_item.Value;
                i++;
            }
            string fileList = string.Join("\" ", files);
            fileList += "\"";
            System.Diagnostics.ProcessStartInfo sdp = new System.Diagnostics.ProcessStartInfo();
            string cmdArgs = string.Format("A {0} {1} -ep1 -r",
                String.Format("\"{0}\"", rarPackagePath),
                fileList);
            sdp.ErrorDialog = false;
            sdp.UseShellExecute = true;
            sdp.Arguments = cmdArgs;
            sdp.FileName = winrarPath;//Winrar.exe path
            sdp.CreateNoWindow = false;
            sdp.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
            System.Diagnostics.Process process = System.Diagnostics.Process.Start(sdp);
            process.WaitForExit();
            error = "OK";
        }
        catch (Exception ex)
        {
            error = ex.Message;
        }
        return error;
    }

为此,您可以制作具有完整文件夹路径的 rar。 -r 参数可以递归文件夹和文件。 感谢旁观者。 您还可以指定包装的扩展名。

例如

string rarPackage = "E:/Backup.rar";
Dictionary<int, string> accFiles = new Dictionary<int, string>();
accFiles.Add(1, "D://*.txt");
accFiles.Add(2, "D://*.html");
accFiles.Add(3, "D://*.jpg");
RarFiles(rarPackage, accFiles); 

解压

public static void UnrarFiles(string rarPackagePath, string dir)
    {
        System.Diagnostics.ProcessStartInfo sdp = new System.Diagnostics.ProcessStartInfo();
        string cmdArgs = string.Format("X {0} * {1}",
            String.Format("\"{0}\"", rarPackagePath),
            String.Format("\"{0}\"", dir));
        sdp.Arguments = cmdArgs;
        sdp.ErrorDialog = true;
        sdp.UseShellExecute = true;
        sdp.CreateNoWindow = false;
        sdp.FileName = rarPath;
        sdp.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
        System.Diagnostics.Process process = System.Diagnostics.Process.Start(sdp);
        process.WaitForExit();
    }

关于c# - 如何使用c#制作完整文件夹的rar文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15988856/

相关文章:

c# - WebApi、iOS 和 Forms Auth - 可以工作吗?

java - 如何从java启动外部进程并且仍然能够与该进程交互?

c - 确定进程的状态

macos - 在运行时在Mac OS X上设置进程名称

c#-4.0 - 我需要在我的 C# 应用程序中使用 winrar 压缩一个或多个文件

java - 针对特定文件的 WinRAR 命令

c# - 如何使用 C# 执行 PowerShell 脚本

c# - 使用 lambda ID(distinct) 和特定 ID 的计数从列表中返回 2 个属性?

c# - 自定义异常消息 C#

console - 如何从批处理文件创建自动执行的 WinRar SFX 文件?