Copiando archivos

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. [:|]

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 [H]