Перебирайте текстовый файл в поисках строки, когда соответствует, верните true - PullRequest
0 голосов
/ 16 июля 2011

В настоящее время я хочу иметь возможность циклически перебирать текстовый файл в поисках определенной строки, в моем случае: "mp4: production /

Когда строка соответствует (файл будет периодически обновляться- поэтому строка не обязательно будет присутствовать вначале), ее строка (в текстовом файле) может быть затем выведена, например, в окне сообщения

Как этого можно достичь, любые примеры будут оценены

Ответы [ 3 ]

1 голос
/ 16 июля 2011
while(true) {
    Thread.Sleep(500); // lets get a break
    if(!System.IO.File.Exists(FILE_NAME)) continue;
    using (System.IO.StreamReader sr = System.IO.File.OpenText(FILE_NAME)) 
    {
        string s = "";
        while ((s = sr.ReadLine()) != null) 
        {
            if(s.Contains(TEXT_TO_SEARCH)) {
                // output it
            }
        }
    }
}
0 голосов
/ 17 апреля 2013

Если вы хотите заблокировать поток, вызвав sleep, вы должны сначала создать новый поток для чтения файла.Вы можете использовать System.Threading.Timer: http://msdn.microsoft.com/en-us/library/swx5easy.aspx

0 голосов
/ 16 июля 2011

Вам придется многократно зацикливать и читать файл.

Обратите внимание, что вам нужна некоторая обработка ошибок, поскольку вполне вероятно, что файл иногда будет недоступен, потому что в него записывается какой-то другой процесс.*

bool found = false;
while (!found) {
  try {
    found = File.ReadAllText(fileName).Contains(searchString);
  } catch (IOException) {
    // I/O error, occurs if the file is being written.
    // Nothing to do here, just wait and retry.
  }
  if (!found) {
    Thread.Sleep(5000);
  }
}

Приведенный выше код предполагает, что файл достаточно мал, чтобы его можно было прочитать в память.Если файл очень большой, вам придется читать его небольшими порциями, чтобы избежать исключений нехватки памяти.

Код ожидает 5 секунд (5000 миллисекунд) между каждой попыткой.Вы должны отрегулировать время в зависимости от вашей конкретной ситуации, то есть от того, как часто вы можете проверять файл, сохраняя при этом достаточно низкий риск того, что он нарушает процесс, который пытается изменить файл.

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