Introducción a C#
Por Nacho Cabanes, versión 0.93 de 16-abr-2010


(Nota: Estás viendo una versión del curso antigua, creada en 2009. Es recomendable que sigas la versión 2015, mucho más actualizada, con contenidos más detallados, más ejemplos y más ejercicios propuestos)

7. Manejo de ficheros

7.1. Escritura en un fichero de texto

Para manejar ficheros, siempre deberemos realizar tres operaciones básicas:

Eso sí, no siempre podremos realizar esas operaciones, así que además tendremos que comprobar los posibles errores. Por ejemplo, puede ocurrir que intentemos abrir un fichero que realmente no exista, o que queramos escribir en un dispositivo que sea sólo de lectura.

Vamos a ver un ejemplo, que cree un fichero de texto y escriba algo en él:

/*---------------------------*/
/*  Ejemplo en C# nº 70      */
/*  ejemplo70.cs             */
/*                           */
/*  Escritura en un fichero  */
/*  de texto                 */
/*                           */
/*  Introduccion a C#,       */
/*    Nacho Cabanes          */
/*---------------------------*/
 
using System;
using System.IO;   // Para StreamWriter
 
public class Ejemplo70
{
 
  public static void Main()
  {
    StreamWriter fichero;
 
    fichero = File.CreateText("prueba.txt");
    fichero.WriteLine("Esto es una línea");
    fichero.Write("Esto es otra");
    fichero.WriteLine(" y esto es continuación de la anterior");
    fichero.Close();    
  }
 
}
 

Hay varias cosas que comentar sobre este programa:

Ejercicios propuestos:

  1. Crea un programa que vaya leyendo las frases que el usuario teclea y las guarde en un fichero de texto. Terminará cuando la frase introducida sea "fin" (esa frase no deberá guardarse en el fichero).

 

7.2. Lectura de un fichero de texto

La estructura de un programa que leyera de un fichero de texto sería parecida:

/*---------------------------*/
/*  Ejemplo en C# nº 71:     */
/*  ejemplo71.cs             */
/*                           */
/*  Lectura de un fichero de */
/*  texto                    */
/*                           */
/*  Introduccion a C#,       */
/*    Nacho Cabanes          */
/*---------------------------*/
 
using System;
using System.IO;   // Para StreamReader
 
public class Ejemplo71
{
 
  public static void Main()
  {
    StreamReader fichero;
    string linea;
 
    fichero = File.OpenText("prueba.txt");
    linea = fichero.ReadLine();
    Console.WriteLine( linea );
    Console.WriteLine( fichero.ReadLine() );
    fichero.Close();    
  }
 
}
 

Las diferencias son:

Ejercicios propuestos:

 

7.3. Lectura hasta el final del fichero

Normalmente no querremos leer sólo una frase del fichero, sino procesar todo su contenido, de principio a fin

En un fichero de texto, la forma de saber si hemos llegado al final es intentar leer una línea, y comprobar si el resultado ha sido "null", lo que nos indicaría que no se ha podido leer y que, por tanto estamos en el final del fichero.

Normalmente, si queremos procesar todo un fichero, esta lectura y comprobación debería ser repetitiva, así:

/*---------------------------*/
/*  Ejemplo en C# nº 72:     */
/*  ejemplo72.cs             */
/*                           */
/*  Lectura de un fichero de */
/*  texto                    */
/*                           */
/*  Introduccion a C#,       */
/*    Nacho Cabanes          */
/*---------------------------*/
 
using System;
using System.IO;   // Para StreamReader
 
public class Ejemplo72
{
 
  public static void Main()
  {
    StreamReader fichero;
    string linea;
 
    fichero = File.OpenText("prueba.txt");
    do 
    {
      linea = fichero.ReadLine();
      if (linea != null)
        Console.WriteLine( linea );
    } 
    while (linea != null);
 
    fichero.Close();    
  }
 
}
 

Ejercicios propuestos: