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.4. Añadir a un fichero existente

La idea es sencilla: en vez de abrirlo con CreateText ("crear texto"), usaremos AppendText ("añadir texto"). Por ejemplo, podríamos crear un fichero, guardar información, cerrarlo, y luego volverlo a abrir para añadir datos, de la siguiente forma:

/*---------------------------*/
/*  Ejemplo en C# nº 73      */
/*  ejemplo73.cs             */
/*                           */
/*  Añadir en un fichero     */
/*  de texto                 */
/*                           */
/*  Introduccion a C#,       */
/*    Nacho Cabanes          */
/*---------------------------*/
 
using System;
using System.IO;   // Para StreamWriter
 
public class Ejemplo73
{
 
  public static void Main()
  {
    StreamWriter fichero;
 
    fichero = File.CreateText("prueba2.txt");
    fichero.WriteLine("Primera línea");
    fichero.Close();
 
    fichero = File.AppendText("prueba2.txt");
    fichero.WriteLine("Segunda línea");
    fichero.Close();
 
  }
 
}
 

Ejercicios propuestos:

 

7.5. Ficheros en otras carpetas

Si un fichero al que queremos acceder se encuentra en otra carpeta, basta con que indiquemos la ruta hasta ella, recordando que, como la barra invertida que se usa en sistemas Windows para separar los nombres de los directorios, coincide con el carácter de control que se usa en las cadenas de C y los lenguajes que derivan de él, deberemos escribir dichas barras invertidas repetidas, así:

 
string nombreFichero = "d:\ejemplos\ejemplo1.txt";     // Ruta absoluta
string nombreFichero2 = "..\datos\configuracion.txt";  // Ruta relativa
 

Como esta sintaxis puede llegar a resultar incómoda, en C# existe una alternativa: podemos indicar una arroba (@) justo antes de abrir las comillas, y entonces no será necesario delimitar los caracteres de control:

 
string nombreFichero = @"d:\ejemplos\ejemplo1.txt";
 

Ejercicios propuestos:

 

7.6. Saber si un fichero existe

Hasta ahora, estamos intentando abrir ficheros para lectura, pero sin comprobar realmente si el fichero existe o no, lo que puede suponer que nuestro programa falle en caso de que el fichero no se encuentre donde nosotros esperamos.

Una primera solución es usar "File.Exists(nombre)", para comprobar si está, antes de intentar abrirlo:

 
/*---------------------------*/
/*  Ejemplo en C# nº 74:     */
/*  ejemplo74.cs             */
/*                           */
/*  Lectura de un fichero de */
/*  texto                    */
/*                           */
/*  Introduccion a C#,       */
/*    Nacho Cabanes          */
/*---------------------------*/
 
using System;
using System.IO;
 
public class Ejemplo74
{
 
  public static void Main()
  {
    StreamReader fichero;
    string nombre;
 
    while (true) {
      Console.Write( "Dime el nombre del fichero (\"fin\" para terminar): ");
      nombre = Console.ReadLine();
      if (nombre == "fin") 
        break;
      if ( File.Exists(nombre) )
      {
        fichero = File.OpenText( nombre );
        Console.WriteLine("Su primera linea es: {0}",
          fichero.ReadLine() );
        fichero.Close();    
      }
      else
        Console.WriteLine( "No existe!" );
    }
  }
 
}
 

Ejercicios propuestos: