Copiando archivos

Published 25 May 07 12:40 AM | csharp 

Bueno hace mucho tiempo que no posteaba nada y ya me iba apeteciendo poner algo nuevo en el blog.

Como no se me ocurría nada en concreto ya que esto de los exámenes solo embota la mente me he dedicado un ratejo a pasearme por un par de foros a ver si aprendía algo para variar y lo que me he dado cuenta es que sigue habiendo vida aparte del framework 3.0. Me explico, todos los días (yo mismo el primero) estamos hablando de Windows Presentation Foundatión, Workflow, Silverlight, etc y sigue habiendo gente habiendo gente que necesita hacer cosas básicas en sus programas.

Dando esta vueltecilla me he fijado en que hay mucha gente, sobre todo la que empieza claro está, que pregunta sobre como operar con ficheros.

Así que juntando y pegando algunos de los post que he visto, la mayoría lo que querían era saber cómo copiar y mover archivos de sitio.

Bueno pues voy a hacer eso precisamente, mover una carpeta entera y copiar archivos.

Hay que crearse un nuevo proyecto de aplicación de Windows, los que sean muy pero que muy machotes que creen un proyecto de consola. Indifferent

Bien una vez estamos delante de nuestro formulario en la vista de diseño arrastramos tres botones. Uno va a ser para elegir el directorio de origen, otro para el de destino y otro para dar la orden de copiar.

Ahora nos vamos a la vista de código y agregamos el namespace System.IO que nos permite interoperar fácilmente con nuestros archivos y "alguna" cosilla más.

Luego vamos a añadir tres variables globales, dos de ellas de tipo String para almacenar los directorios de origen y destino y otra de tipo DirectoryInfo que nos da bastantes facilidades para trabajar con los directorios. Con este objeto tienes completamente a mano el listado de archivos de una carpeta, su path, etc.

String directorio;
String pathDestino;
DirectoryInfo infoDir;

Bien ahora hay que agregar a cada evento click el siguiente código. Para generar el evento click de un botón simplemente en la vista de diseño hacemos doble click sobre cada uno de los botones.

En el primer botón voy a seleccionar la carpeta que quiero copiar por lo que voy a mostrar un FolderBrowserDialog que me muestra un pequeño explorador de carpetas. Una vez he seleccionado el directorio y pulso aceptar llamo al constructor del objeto DirectoryInfo para que se quede con los datos de la carpeta y sus archivos.

private void button1_Click(object sender, EventArgs e)
{
    FolderBrowserDialog a = new FolderBrowserDialog();
    a.ShowDialog();
    infoDir = new DirectoryInfo(a.SelectedPath);

}

El código del segundo botón sería el que sigue, aquí simplemente almaceno la dirección de destino.

private void button2_Click(object sender, EventArgs e)
{
    FolderBrowserDialog a = new FolderBrowserDialog();
    a.ShowDialog();
    pathDestino = a.SelectedPath;
}

Ya por último en el tercer botón se agrega este código para copiar los archivos de la carpeta:

private void button3_Click(object sender, EventArgs e)
{

    foreach (FileInfo file in infoDir.GetFiles())
    {
        file.CopyTo(pathDestino + "\\" + file.Name);
    }

}

Luego simplemente recorro la colección y voy copiando los archivos.

El proceso es bien sencillo, espero que sea de ayuda a alguien que esté empezando. Como esto era un ejemplillo no he controlado los casques que pudiera dar la aplicación ni tampoco que dentro de la carpeta origen hubiera otra carpeta, en cuyo caso por este método no se copiaría. Habría que entrar en la subcarpeta y leer y realizar el proceso que he seguido antes.

Si lo que queremos es mover la carpeta de lugar simplemente tenemos que utilizar la función MoveTo que mueve por completo la carpeta de lugar.
 

Saludetes Cool


Crossposting from LaBloguera.net
Filed under: , ,

Comments

No Comments
Anonymous comments are disabled