текстовый файл не обновляется при запуске проблема c # - PullRequest
0 голосов
/ 04 октября 2018

У меня есть следующий код:

strCmdText = "/C cppcheck.exe --enable=all " + StrFile1 + " 2> " + StrfolderOut + "\\fileOut.txt";
//Console.WriteLine(strCmdText);
System.Diagnostics.Process.Start("CMD.exe", strCmdText);

, но когда я пытаюсь прочитать его потом, это похоже на то, что программа выполняет его после завершения выполнения

Я выполнил 2 теста:

Первый, который я использую в качестве ввода "file1.txt" (fileOut не существует), файл создается с помощью cmd, перенаправляющего вывод с использованием ">".При попытке прочитать, он говорит, что «файл не существует»

Во-вторых, я использую «file2.txt» в качестве входных данных (fileOut существует и имеет информацию о file2.txt), и он читает, носодержимое файла "file1.txt".

Так что я думаю, что команда cmd запускается после завершения выполнения.Я трижды проверил пути, так что это не проблема, так как я читаю путь с помощью папки с файлами gui.

Я использую этот код для чтения

public List<Error> LeerArchivo()
{
    List<Error> listaErrores = new List<Error>();

    string @folderLocation = StrfolderOut + "\\fileOut.txt";
    Console.WriteLine(@folderLocation);
    //OpenFileDialog openFileDialog = new OpenFileDialog();
    //openFileDialog.ShowDialog();
    if (File.Exists(@folderLocation))
    {
        try
        {
            // Create an instance of StreamReader to read from a file.
            // The using statement also closes the StreamReader.
            using (StreamReader sr = new StreamReader(@folderLocation))
            {
                string line = "";
                // Read and display lines from the file until the end of 
                // the file is reached.
                Console.WriteLine("reading");
                while ((line = sr.ReadLine()) != null)
                {
                    Console.WriteLine(line);
                }
                Console.WriteLine(line);
            }
        }
        catch (Exception e)
        {
            // Let the user know what went wrong.
            Console.WriteLine("The file could not be read:");
            Console.WriteLine(e.Message);
        }           
    }
    else
    {
        Console.WriteLine("no existe");
    }

    return listaErrores;
}

1 Ответ

0 голосов
/ 04 октября 2018

Мне удается, чтобы это работало, я использовал:

 Process process = new Process();
 process.StartInfo.FileName = "CMD.exe";
 {do cppcheck... etc}
 process.Start();
 process.WaitForExit();

Теперь это работает, я думаю, это так, поскольку основная программа ожидает завершения этого процесса.Может быть, у меня может быть более глубокое объяснение того, что происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...