Principal
package copiapegarecursivo; import java.io.File; import java.io.IOException; public class CopiaPegaRecursivo { public static void main(String[] args) { // Definición del directorio origen File origen = new File("C:\\Users\\Navis\\Desktop\\origen\\"); // Definición del directorio destino File destino = new File("C:\\Users\\Navis\\Desktop\\destino\\"); // llamada a la clase Ficheros fc = new Ficheros(); try{ // intenta //copiar directorio origen en destino fc.copiarDirectorio(origen, destino); //saca mensaje por pantalla System.out.println("Volcado finalizado"); } catch(IOException e){ //control de errores //definción del error e.printStackTrace(); } } }
Clase
package copiapegarecursivo; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class Ficheros { // Función qe copia el directorio public void copiarDirectorio(File dOrigen, File dDestino) throws IOException{ // Si es un directorio origen if(dOrigen.isDirectory()){ // Si el directorio destino no existe if(!dDestino.exists()){ //crea el directorio destino dDestino.mkdir(); } // Se crea un listado del contenido del directorio origen String[] hijos = dOrigen.list(); // recorrer la lista for(int i = 0; i < hijos.length; i++){ // copia los directorios copiarDirectorio(new File(dOrigen, hijos[i]), new File(dDestino, hijos[i])); // saca el mensaje por pantalla System.out.println("Copiado " + hijos[i]); } } else{ // copia los ficheros copiarFichero(dOrigen, dDestino); } } //Función que copia los ficheros public void copiarFichero(File fOrigen, File fDestino) throws IOException{ // Lee el fichero FileInputStream origen = new FileInputStream(fOrigen); // Escribe el fichero FileOutputStream destino = new FileOutputStream(fDestino); byte[] buffer = new byte[1024]; int cap; // mientras no llege al final la lectura del origen... while ((cap = origen.read(buffer)) > 0){ // escribe en destino destino.write(buffer, 0, cap); } // cierra los ficheros origen.close(); destino.close(); // saca un mensaje por pantalla System.out.println("Copiado " + fOrigen.getName()); } }
0 comentarios:
Publicar un comentario