Los archivos son elementos externos a los programas. De hecho, residen en elementos físicos que están fuera de los espacios lógicos de las apps o aplicaciones. Por ende, muchas situaciones inesperadas pueden ocurrir al trabajar con ellos. Aquí una tres puntos a tener en cuenta cuando manejamos archivos desde nuestros desarrollos, que no solo aplican para el sistema de archivos tradicional, sino también para el Isolated Storage de Windows Phone y el Local Storage de Windows 8.
  1. Las operaciones con archivos siempre deberían ir enmarcadas en un bloque try-catch para prevenir que excepciones inesperadas lleguen al usuario. Y en la medida de lo posible, cada excepción probable, ha de ser manejada por separado.
  2. Las operaciones con archivos siempre deberían ir enmarcadas en una sentencia Using, dado que esto provee una sintaxis conveniente que asegura una liberación de recursos efectiva. En el caso siguiente, vemos que no tenemos que preocuparnos por hacer dispose de los manejadores de stream. Esto también aplica por ejemplo a cadenas de conexión a bases de datos, que se pueden crear dentro de un using.
    using System;
    using System.IO;
    class Test
    {
        static void Main()
        {
            using (TextWriter w = File.CreateText("log.txt"))
            {
                w.WriteLine("This is line one");
                w.WriteLine("This is line two");
            }
            using (TextReader r = File.OpenText("log.txt"))
            {
                string s;
                while ((s = r.ReadLine()) != null)
                {
                    Console.WriteLine(s);
                }
            }
        }
    }
  3. Antes de usar un directorio o un archivo, chequee que éste existe. Las apis generalmente proporcionan elementos como File.Exists(); y Directory.Exists();