使用StreamReader检查文件是否包含字符串
本文关键字:包含 字符串 是否 文件 StreamReader 检查 使用 | 更新日期: 2023-09-27 17:57:57
我有一个字符串是args[0]
。
这是我到目前为止的代码:
static void Main(string[] args)
{
string latestversion = args[0];
// create reader & open file
using (StreamReader sr = new StreamReader("C:''Work''list.txt"))
{
while (sr.Peek() >= 0)
{
// code here
}
}
}
我想检查我的list.txt
文件是否包含args[0]
。如果是,那么我将创建另一个进程StreamWriter
,将字符串1
或0
写入文件中。我该怎么做?
您希望文件特别大吗?如果没有,最简单的方法就是阅读整个内容:
using (StreamReader sr = new StreamReader("C:''Work''list.txt"))
{
string contents = sr.ReadToEnd();
if (contents.Contains(args[0]))
{
// ...
}
}
或者:
string contents = File.ReadAllText("C:''Work''list.txt");
if (contents.Contains(args[0]))
{
// ...
}
或者,你可以逐行阅读:
foreach (string line in File.ReadLines("C:''Work''list.txt"))
{
if (line.Contains(args[0]))
{
// ...
// Break if you don't need to do anything else
}
}
或者更像LINQ:
if (File.ReadLines("C:''Work''list.txt").Any(line => line.Contains(args[0])))
{
...
}
请注意,ReadLines
只能从.NET4中获得,但您可以很容易地在循环中调用TextReader.ReadLine
。
- 不应添加";"在using语句的末尾
-
工作代码:
string latestversion = args[0]; using (StreamReader sr = new StreamReader("C:''Work''list.txt")) using (StreamWriter sw = new StreamWriter("C:''Work''otherFile.txt")) { // loop by lines - for big files string line = sr.ReadLine(); bool flag = false; while (line != null) { if (line.IndexOf(latestversion) > -1) { flag = true; break; } line = sr.ReadLine(); } if (flag) sw.Write("1"); else sw.Write("0"); // other solution - for small files var fileContents = sr.ReadToEnd(); { if (fileContents.IndexOf(latestversion) > -1) sw.Write("1"); else sw.Write("0"); } }
if ( System.IO.File.ReadAllText("C:''Work''list.txt").Contains( args[0] ) )
{
...
}
接受的答案读取内存中可能消耗的所有文件。
这是一个受VMAtm答案启发的替代方案
using (var sr = new StreamReader("c:''path''to''file", true))
for (string line; (line = sr.ReadLine()) != null;) //read line by line
if (line.Contains("mystring"))
return true;