C#调用Linux系统命令执行文件合并操作

项目用docker部署在了Linux服务器中,大附件分片上传后需要进行文件合并,为提高合并速度,使用系统命令进行操作,代码如下:

      #region 执行Linux系统命令
                try
                {
                    //拼接合并命令中的文件字符串,sourcePath为文件块所在目录,targetPath为合并文件的目录
                    var fileStr = "";
                    for (var i = 0; i < files.Length; i++)
                    {
                        fileStr += fileStr.Length > 0 ? " " + sourcePath + i.ToString() : sourcePath + i.ToString();
                    }

                    //合并文件命令(cat /home/test/1.txt home/test/2.txt >home/test/all.txt)
                    string command = "cat " + fileStr + " >" + targetPath.Replace("\\", "/");
                    //执行结果
                    string result = "";
                    using (System.Diagnostics.Process proc = new System.Diagnostics.Process())
                    {
                        proc.StartInfo.FileName = "/bin/bash";
                        proc.StartInfo.Arguments = "-c \" " + command + " \"";
                        proc.StartInfo.UseShellExecute = false;
                        proc.StartInfo.RedirectStandardOutput = true;
                        proc.StartInfo.RedirectStandardError = true;
                        proc.Start();

                        result += proc.StandardOutput.ReadToEnd();
                        result += proc.StandardError.ReadToEnd();

                        proc.WaitForExit();
                    }
                }
                catch (Exception ex)
                {
                    logger.Error("合并报错:" + ex.Message);
                }
        #endregion

 

posted @ 2020-11-23 19:51  Jackie Hao  阅读(989)  评论(0编辑  收藏  举报