using System;
using System.IO;
using System.Collections;
namespace ConsoleApplication2
{
class Class1
{
static int file(string args)
{
int aux=0;
// Verifica si en la ruta proporcionada, se encuentra el nombre de un archivo
if(File.Exists(args))
{
Console.WriteLine("la ruta termina en un archivo, no es valida \n");
aux=1;
}
// Verifica si la ruta existe
else if(Directory.Exists(args))
{
Console.WriteLine("la ruta es valida, graxs \n");
aux=0;
}
//si no existe lo indica
else
{
Console.WriteLine("{0} la ruta no es valida. \n", args);
aux=1;
}
return (aux);
}
// Analiza en la ruta especificada y hace recursion para buscar en las carpetas que se encuentran en la ruta
static void Directorio(string targetDirectory,string extension,string palabra)
{
// obtiene la lista de los archivos que tienen la extension proporcionada por el usuario agregandole un
// * al inicio para que almacene los archivos que terminen con el texto indicado
string extension2 ="*"+extension;
string [] fileEntries = Directory.GetFiles(targetDirectory,extension2);
// Console.WriteLine(fileEntries.ToString());
// Recorre cada uno de los archivos encontrados en la ruta base, en la busquedad del texto que proporciono el usuario
foreach(string fileName in fileEntries)
{
string filen=fileName;
FileStream stream= new FileStream(filen,FileMode.Open);
StreamReader reader=new StreamReader(stream);
int size=(int)stream.Length;
string cad;
int pos=0;
for (int i=0;i<size;i++)
{
cad=reader.ReadLine();
if (cad==null)
break;
else
{
if(cad.IndexOf(palabra)>=0)
{
Console.Write("\n {0}\n",cad );
int col=cad.IndexOf(palabra);
Console.WriteLine(" palabra encontrada ");
pos=i;
Console.WriteLine("\n la linea en la que se encuentra el texto dentro del archivo es: {0}",pos+1);
Console.WriteLine("\n la columna en la que se encuentra el texto dentro del archivo es: {0}", col);
}
}
}
}
// aplica la recursion a los subdirectorios encontrados en la ruta base para asi analizar
// los archivos de cada uno de ellos
string [] subdirectoryEntries = Directory.GetDirectories(targetDirectory);
foreach(string subdirectory in subdirectoryEntries)
Directorio(subdirectory,extension2,palabra);
}
static void Main()
{
Console.WriteLine("introduce la ruta base de la busquedad");
string ruta;
ruta=Console.ReadLine();
int flag=file (ruta);
if (flag==0)
{
Console.WriteLine("introduce la extension base para la busquedad en archivo");
string extension=Console.ReadLine();
Console.WriteLine("intorduce el texto a buscar");
string texto=Console.ReadLine();
Directorio( ruta,extension,texto);
Console.ReadLine();
}
else
Console.ReadLine();
}
}
}
// Te agradeceria cualquier comentario o enriquecimiento del codigo.
// arte-km 