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