在文本文件中循环查找字符串,匹配时返回true
本文关键字:返回 true 字符串 文件 文本 循环 查找 | 更新日期: 2023-09-27 18:02:12
我目前希望能够循环通过文本文件寻找一个特定的字符串,在我的情况下:"mp4:production/
当字符串匹配(文件将定期更新-因此字符串不一定首先出现)时,它的行(在文本文件中)可以输出,例如在消息框
中这是如何实现的,任何例子将不胜感激
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
}
}
}
}
您必须反复循环并读取文件。
请注意,您需要一些错误处理,因为有时很可能由于其他进程正在写入文件而无法访问该文件。
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毫秒)。您应该根据您的具体情况来调整时间,例如,您可以检查文件的频率,同时保持它干扰试图更改文件的进程的风险相当小。
如果您想通过调用sleep来阻塞线程,您应该首先创建一个新线程来执行文件读取。您可以使用System.Threading.Timer: http://msdn.microsoft.com/en-us/library/swx5easy.aspx