我正在尝试使用c#控制台应用程序中的进程运行exe,并将输出逐行写入TXT文件。这应该在所有子文件夹文件中递归运行。
当我使用文件较少的文件夹运行时,这非常有用。但是,当在具有大量文件列表的顶级文件夹中或在驱动器级别(例如D:\或E:\)运行此文件时,它不会提供完整的输出,并且会在其完整输出之间停下来。控制台输出也是如此。
试图启用Standarderror并输出该错误,但是却没有得到任何错误。请建议为什么要用部分数据来完成而不是在整个列表中运行?
Process sigCheckProcess = new Process();
sigCheckProcess.StartInfo.FileName = sigcheckdir + "\\sigcheck64.exe";
sigCheckProcess.StartInfo.Arguments = "-a -h -i -l -s " + dir;
sigCheckProcess.StartInfo.RedirectStandardOutput = true;
sigCheckProcess.StartInfo.UseShellExecute = false;
sigCheckProcess.StartInfo.CreateNoWindow = true;
sigCheckProcess.Start();
using (StreamWriter streamWriter = File.CreateText(@"D:\Sigcheckoutput.txt"))
{
using (StreamReader streamReader = sigCheckProcess.StandardOutput)
{
while (!streamReader.EndOfStream)
{
var content = sigCheckProcess.StandardOutput.ReadLine();
streamWriter.WriteLine(content);
}
}
}
sigCheckProcess.WaitForExit();
答案 0 :(得分:0)
java.lang.ClassCastException: com.package.MyClass$addProduct$1 cannot be cast to kotlin.jvm.functions.Function1
答案 1 :(得分:-1)
您可以使用此:
Process.Start(sigCheckProcess).WaitForExit();
using (System.IO.StreamWriter writer = new System.IO.StreamWriter("output.txt")) // output txt file.
{
using (System.IO.StreamReader reader = new System.IO.StreamReader(Path.Combine(@"c:\temp\", "test.txt"))) // replaces sigCheckProcess.StandardOutput
{
while (!reader.EndOfStream)
{
line = reader.ReadLine();
writer.WriteLine(line);
}
}
}