[ Foro de C# ]

Duda try catch

20-Sep-2017 08:37
Invitado (Rubén)
1 Respuestas

Buenas Nacho.

En los ejercicios de manejo de ficheros, hago un try-catch para controlar que el fichero exista. El tema es que al hacerlo, como tengo "fichero" dentro del try-catch, no está disponible para el resto del ámbito y me da error l compilar. Sin el try-catch funciona y hace bien la búsqueda(si le pongo el texto correcto del documento).
He probado a definir fichero fuera del try catch, pero entonces me falta el nombre del archivo.
¿Cómo podría solucionarlo?

Muchas gracias

Saludos


//////////////////////////////////////

public class Ejercicio_8_3_6
{
public static void Main()
{
string nombreFichero;
string frase;
string texto;
int contador = 0;
StreamReader fichero;

//try
//{
Console.WriteLine("Introduce el nombre del fichero a buscar");
nombreFichero = Console.ReadLine();
Console.WriteLine("Introduce el texto a buscar");
frase = Console.ReadLine();
fichero = File.OpenText(nombreFichero); //Abro fichero
//StreamReader fichero = new StreamReader(nombreFichero); //También sirve
//}
/*
catch(FileNotFoundException)
{
Console.WriteLine("Fichero no encontrado");
}
*/

do
{
texto = fichero.ReadLine();
if(texto != null) //Debo ponerlo, si no da excepcion al salir por el while. Así, sólo entra aquí si es diferente.
{
if(texto.Contains(frase)) //busco texto en línea
{
contador++;
Console.WriteLine(contador + "--> " + texto);
}
}
}
while(texto != null);
fichero.Close();
Console.WriteLine("FIN");

}
}


20-Sep-2017 11:29
Invitado (Rubén)

public static void Main()
{
string nombreFichero;
string frase;
string texto;
int contador = 0;
StreamReader fichero = null;
bool check = false;

do
{
Console.WriteLine("Introduce el nombre del fichero a buscar");
nombreFichero = Console.ReadLine();
try
{
check = false;
fichero = new StreamReader(nombreFichero);
}
catch(FileNotFoundException)
{
check = true;
Console.WriteLine("Fichero no encontrado");
}
}
while(check == true);
Console.WriteLine("Introduce el texto a buscar");
frase = Console.ReadLine();
do
{
texto = fichero.ReadLine();
if(texto != null) //Debo ponerlo, si no da excepcion al salir por el while. Así, sólo entra aquí si es diferente.
{
if(texto.Contains(frase)) //busco texto en línea
{
contador++;
Console.WriteLine(contador + "--> " + texto);
}
}
}
while(texto != null);
fichero.Close();
if(contador == 0)
Console.WriteLine("No se han encontrado coincidencias");
Console.WriteLine("FIN");






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)