buen de momento no veo o no entiendo pq deberia darte error, donde si veo un posible error pero creo que nada que ver con el tullo es en las lineas:
string linia = sr.ReadLine();
while ( linia != null ) // lee la linia
{
linia = sr.ReadLine(); //CREO QUE DEBERIAS BORRAR ESTA LINEA DE CODIGO
if ( linia != "<codigo del virus>" )
{
sw.WriteLine(linia);
//Console.WriteLine(error1);
}
else
{
//Console.WriteLine("error2");
Console.WriteLine("El fitxer {0} te un virus.",f);
}
linia = sr.ReadLine();
}
Antes de entrar en el bucle lees la 1ª linea del archivo y la asignas a "linia" OK
Entras en el bucle y vuelves a leer una nueva linea asignandola a "linia" por lo que estas perdiendo y no procesando la primera
Luego cuando sales del if, else vuelves a leer, aki ok, pero luego cuando vuelves a seguir el bucle vuelves a leer saltandote otra vez una linea.
Con esto lo que haces es procesar una linea si y otra no.
Bueno con tu problema, cuando te da error? cuando el programa intanta abrirlo a cuando una vez has hecho el proceso lo intantas abrir? pq di es despues del proceso el error puede ser debido a lo anterior ya que te has cargado la mitad de lineas del archivo.
Si no es eso no tengo ni idea, alomejor deberias probar con la clase FileStream.
Saludos, y dime cosas