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