c# - ejemplo - Usando StreamReader para verificar si un archivo contiene una cadena
streamreader vb (3)
Tengo una cadena que es args[0]
.
Aquí está mi código hasta ahora:
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
}
}
}
Me gustaría comprobar si mi archivo list.txt
contiene args[0]
. Si lo hace, entonces crearé otro proceso StreamWriter
para escribir una cadena 1
o 0
en el archivo. ¿Cómo hago esto?
- No debes agregar el '';'' al final de la declaración de uso.
Código para trabajar:
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"); } }
¿Esperas que el archivo sea particularmente grande? Si no, la forma más sencilla de hacerlo sería leer todo el texto:
using (StreamReader sr = new StreamReader("C://Work//list.txt"))
{
string contents = sr.ReadToEnd();
if (contents.Contains(args[0]))
{
// ...
}
}
O:
string contents = File.ReadAllText("C://Work//list.txt");
if (contents.Contains(args[0]))
{
// ...
}
Alternativamente, puedes leerlo línea por línea:
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
}
}
O incluso más como LINQ:
if (File.ReadLines("C://Work//list.txt").Any(line => line.Contains(args[0])))
{
...
}
Tenga en cuenta que ReadLines
solo está disponible desde .NET 4, pero podría llamar a TextReader.ReadLine
en un bucle.
if ( System.IO.File.ReadAllText("C://Work//list.txt").Contains( args[0] ) )
{
...
}