我目前希望能够循环查找特定字符串的文本文件,在我的情况下:“mp4:production /
当字符串匹配时(文件将定期更新 - 因此字符串最初不一定存在),然后可以输出其行(在文本文件中),例如,在消息框中
如何实现这一点,任何例子都将受到赞赏
答案 0 :(得分:1)
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
}
}
}
}
答案 1 :(得分:0)
您必须重复循环并读取文件。
请注意,您需要一些错误处理,因为很可能文件将无法访问,因为其他一些进程正在写入文件。
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毫秒)。您应该根据具体情况调整时间,即您可以检查文件的频率,同时仍然保持相当小的风险,以免干扰尝试更改文件的进程。
答案 2 :(得分:0)
如果要通过调用sleep来阻止线程,则应首先创建一个新线程来读取文件。您可以使用System.Threading.Timer:http://msdn.microsoft.com/en-us/library/swx5easy.aspx