使用cmd进行文件合并速度很快,比常规的打开文件流写入要快很多。
如果是将a文件合并到b文件中(a,b都已存在),那么在b文件的结尾会多出来一个特殊字符,不知道如何去掉。但是如果将a、b文件合并到一个新文件c中就不存在这个问题,一直未解决,暂时用临时文件进行合并,合并完成后删除即可。
//合并文件
Process proc = new Process();
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.FileName = "cmd.exe";
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.RedirectStandardInput = true;
proc.StartInfo.RedirectStandardOutput = true;
//绑定执行完成消息监听
proc.EnableRaisingEvents = true;
proc.Exited += new EventHandler(proc_Exited);
proc.Start();
//先合并tmp和varchar文件到中间文件(由于文件合并后结尾有个特殊字符无法取消,合并到中间文件不存在这个问题)
proc.StandardInput.WriteLine("copy c:\1.txt+c:\2.txt c:\3.txt &exit");
proc.WaitForExit();
proc.Close();
注:WirteLine方法后面需要加 &exit
否则无法正常监听到执行结束方法。