Почему не работает перенаправление ввода/вывода консольного приложения?

Имеем консольное приложение mystem.exe (от яндекса - https://tech.yandex.ru/mystem/)
Имеем приложение Windows Form (C#), пытаюсь перенаправить вывод, сделать его не в файл, а в переменную или элемент формы, не суть, код:

Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = Application.StartupPath + "\\mystem.exe";
p.StartInfo.Arguments = "-n input.txt output.txt";
p.Start();
string output = p.StandardOutput.ReadToEnd();
textBox3.Text = output;
p.WaitForExit();


Никакой реакции, выводит все так же в файл...
  • Вопрос задан
  • 1718 просмотров
Пригласить эксперта
Ответы на вопрос 1
lam0x86
@lam0x86
Во-первых, ошибка в том, что вы указываете выходной файл.
Во-вторых, нужно явно интерпретировать выход как UTF8.

Process p = new Process();
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.FileName = "mystem.exe";
            p.StartInfo.Arguments = "-n input.txt";
            p.Start();
            using (var reader = new StreamReader(p.StandardOutput.BaseStream, Encoding.UTF8))
            {
                textBox3.Text = reader.ReadToEnd();
            }
            p.WaitForExit();


Или, может, я не понял вопроса, и вы хотите выводить и в файл, и в выходной поток? Похоже, что данная утилита так не умеет. Придётся сохранять файл самому.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы