readtoend read ejemplo c# string file-io

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?


  1. No debes agregar el '';'' al final de la declaración de uso.
  2. 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] ) ) { ... }