Acceso al sistema de archivos

Silverlight al ejecutarse dentro de un “sandbox” no tiene acceso directo al sistema de archivos pero sí lo tiene si accedemos desde las cajas de diálogo:

  • OpenFileDialog
  • SaveFileDialog

Ambas clases se encuentran en el namespace System.Windows.Controls, y nos permiten abrir uno o varios archivos para su lectura. Veamos un ejemplo:

        private void BtnAbrir_Click(object sender, RoutedEventArgs e)
        {
            var ofd = new OpenFileDialog();
            ofd.InitialDirectory = @"c:\prueba";
            ofd.Filter = "Archivos de texto|*.txt";
            if (ofd.ShowDialog() == true)
            {
                using (Stream stream = ofd.File.OpenRead())
                {
                    using (StreamReader reader = new StreamReader(stream))
                    {
                        var contenido = reader.ReadToEnd();
                        TxtFicheros.Text = contenido;
                        reader.Close();
                    }
                    stream.Close();
                }
            }
        }

Por otro lado la clase SaveFileDialog nos abre una ventana de dialogo para que el usuario seleccione un archivo para escritura.

private void BtnGuardar_Click(object sender, RoutedEventArgs e)
        {
            var sfd = new SaveFileDialog();
            sfd.Filter = "Archivos de texto|*.txt";
            if (sfd.ShowDialog() == true)
            {
                using (Stream stream = sfd.OpenFile())
                {
                    using (StreamWriter writer = new StreamWriter(stream))
                    {
                        writer.WriteLine(TxtBoxGuardar.Text);
                        writer.Close();
                    }
                    stream.Close();
                }
            }
        }

Si utilizamos la propiedad DefaultFileName del objeto SaveFileDialog, se desplegará una alerta, esto se hace para evitar un ataque conocido como “Click Jacking“. Esta alerta no se ejecuta en aplicaciones de confianza elevada.

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.