// Este ejemplo muestra cómo se procesa
el contenido de un archivo, que
//indica operaciones matemáticas
básicas: * / + -
// Este ejemplo en particular, escribe
el resultado en un archivo destino
using
System;
using
System.IO;
class
Calculadora
{
StreamReader
sr;
StreamWriter
sw;
bool abierto1 = false;
bool abierto2 = false;
// Constructor: Recibe el nombre del archivo y lo intenta
abrir.
// Si no puede abrirse para lectura, "abierto"
queda como false
// Si lo puede abrir, crea un segundo archivo con un nombre
similar.
public Calculadora(string
filename)
{
try
{
sr = new
StreamReader(filename);
abierto1 = true;
}
catch (Exception
e)
{
Console.WriteLine("Error
en la apertura de \"{0}\": {1}",
filename,
e.ToString());
}
if
(abierto1)
{
string
nombrearchivo2;
nombrearchivo2 = "c.txt";
try
{
sw = new
StreamWriter(nombrearchivo2);
abierto2 = true;
}
catch (Exception
e)
{
Console.WriteLine("Error en la apertura de \"{0}\":
{1}",
nombrearchivo2, e.ToString());
}
}
}
// Operacion: Recibe la operación y dos números en forma de
string.
// Retorna el resultado (int) de la operación entre ambos
números.
int Operacion(string op, string n1, string n2)
{
switch
(op)
{
case
"+": return
(int.Parse(n1) + int.Parse(n2));
case
"-": return
(int.Parse(n1) - int.Parse(n2));
case
"*": return
(int.Parse(n1) * int.Parse(n2));
case
"/": return
(int.Parse(n1) / int.Parse(n2));
}
return (0);
}
// Procesar: lee el archivo abierto, línea por línea,
// procesando el contenido en forma de operaciones y
escribiendo
// el resultado en un segundo archivo.
// Observaciones: Al finalizar se cierran los dos streams.
// No se valida el formato de c/línea.
public void Procesar()
{
string
linea, linea2;
string[] elementos;
// Si no se pudo abrir, no se podrá leer ni escribir
if (!abierto1 || !abierto2) return;
Console.WriteLine("Procesando
...");
linea
= sr.ReadLine();
while (linea != null)
{
elementos = linea.Split();
// ahora graba los resultados en el segundo archivo
linea2 = linea + " = " +
Operacion(elementos[1], elementos[0], elementos[2]).ToString();
sw.WriteLine(linea2);
linea = sr.ReadLine();
}
sr.Close(); abierto1 = false;
sw.Close(); abierto2 = false;
Console.WriteLine("Listo");
}
static void Main(string[]
args)
{
string nombre;
Console.Write("Nombre
del archivo: ");
nombre = Console.ReadLine();
Calculadora c = new
Calculadora(nombre);
c.Procesar();
Console.ReadLine();
}
}
No hay comentarios:
Publicar un comentario