elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Copia de ficheros recursiva
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Copia de ficheros recursiva  (Leído 1,605 veces)
MrDev

Desconectado Desconectado

Mensajes: 31


Ver Perfil
Copia de ficheros recursiva
« en: 8 Noviembre 2016, 21:45 pm »

Pues al lio, he hecho un programita que le das dos url, una origen y otra de destino, y te copia todos los contenidos del origen en el destino, pero no se por que no me sale, se mete por primera vez en una subcarpeta del origen, la crea en el destino, pero las otras subsubcarpetas del origen no las copia al destino, no llevo bien el debug en eclipse :(

Llevo dos dias dedicandole varias horas y estoy frustrado XD

Código
  1. public class Main {
  2.  
  3. public static void main(String[] args) throws IOException {
  4.  
  5. copiaRecursiva(dir1,dir2); //Introduce en dir1 la direccion origen y dir2 el destino
  6.  
  7. }
  8.  
  9. public static void copiaRecursiva(String dirUno, String dirDos){
  10. File carpeta1 = new File(dirUno); //convertir string dirUno a File para manipularlo
  11. File auxFile = null;   //File auxiliar
  12. File auxDir = null;   //File auxiliar para una url
  13. String[] array = carpeta1.list(); //array de los archivos y directorios listados en la carpeta de origen
  14. try{
  15. for (String string : array) {   //recorrer los ficheros de la carpeta de origen
  16. auxFile = new File(dirUno+string);   //convertir el string del nombre a file para comprobaciones
  17. if(auxFile.isDirectory()){   //comprobar si el fichero es un directorio
  18. auxDir = new File(dirDos+string);   //si lo es, creamos una variable File auxiliar
  19. auxDir.mkdirs();
  20.  
  21. copiaRecursiva(auxFile.getAbsolutePath(),auxDir.getAbsolutePath());
  22. }else{
  23. FileWriter copia = new FileWriter(dirDos+string);
  24.  
  25. copiarFichero(auxFile,new File(dirDos+string));
  26. }
  27. }
  28. }catch(Exception ex){
  29. System.out.println("Error: "+ex.getMessage());
  30. }
  31.  
  32. }
  33.  
  34.  
  35. public static void copiarFichero(File f1, File f2){
  36. try{
  37. byte[] info = new byte[100];
  38. int leido = is.read(info);
  39.  
  40. while(leido>0){
  41. os.write(info);
  42. leido = is.read(info);
  43. }
  44. }catch(Exception ex){
  45. System.out.println("Error: "+ex.getMessage());
  46. }
  47. }
  48. }
  49.  


En línea

0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: Copia de ficheros recursiva
« Respuesta #1 en: 8 Noviembre 2016, 22:57 pm »


Código
  1. uxFile = new File(dirUno+string);

La forma en la que concatenas no es la correcta, falta "\\" alli


En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
MrDev

Desconectado Desconectado

Mensajes: 31


Ver Perfil
Re: Copia de ficheros recursiva
« Respuesta #2 en: 9 Noviembre 2016, 13:38 pm »

Ya lo he corregido, es el siguiente codigo: no hay que meterle la dir1 y dir2 con el "/" final

Código
  1. import java.io.File;
  2. import java.io.FileInputStream;
  3. import java.io.FileOutputStream;
  4. import java.io.FileWriter;
  5. import java.io.IOException;
  6. import java.io.InputStream;
  7. import java.io.OutputStream;
  8.  
  9. public class Main {
  10.  
  11. public static void main(String[] args) throws IOException {
  12.  
  13. copiaRecursiva(dir1,dir2);
  14.  
  15. }
  16.  
  17. public static void copiaRecursiva(String dirUno, String dirDos){
  18. File carpeta1 = new File(dirUno); //convertir string dirUno a File para manipularlo
  19. File auxFile = null;   //File auxiliar
  20. File auxDir = null;   //File auxiliar para una url
  21. String[] array = carpeta1.list(); //array de los archivos y directorios listados en la carpeta de origen
  22. try{
  23. for (String string : array) {   //recorrer los ficheros de la carpeta de origen
  24. auxFile = new File(dirUno+"/"+string);   //convertir el string del nombre a file para comprobaciones
  25. if(auxFile.isDirectory()){   //comprobar si el fichero es un directorio
  26. auxDir = new File(dirDos+"/"+string);   //si lo es, creamos una variable File auxiliar
  27. auxDir.mkdirs();
  28.  
  29. copiaRecursiva(auxFile.getAbsolutePath(),auxDir.getAbsolutePath());
  30. }else{
  31. System.out.println(dirDos+"/"+string);
  32. System.out.println(dirUno+"/"+string);
  33. FileWriter copia = new FileWriter(dirDos+"/"+string);
  34.  
  35. copiarFichero(auxFile,new File(dirDos+"/"+string));
  36. }
  37. }
  38. }catch(Exception ex){
  39. System.out.println("Error: "+ex.getMessage());
  40. }
  41.  
  42. }
  43.  
  44.  
  45. public static void copiarFichero(File f1, File f2){
  46. try{
  47. byte[] info = new byte[100];
  48. int leido = is.read(info);
  49.  
  50. while(leido>0){
  51. os.write(info);
  52. leido = is.read(info);
  53. }
  54. os.flush();
  55. os.close();
  56. }catch(Exception ex){
  57. System.out.println("Error: "+ex.getMessage());
  58. }
  59. }
  60. }
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Puedo hacer una copia de una copia de play2?
Juegos y Consolas
MARU74 0 1,852 Último mensaje 24 Abril 2006, 20:15 pm
por MARU74
hacer una copia de la copia del original
Multimedia
Marianna 1 2,184 Último mensaje 28 Julio 2006, 03:44 am
por Songoku
De forma recursiva « 1 2 3 »
Ejercicios
:ohk<any> 21 18,538 Último mensaje 5 Septiembre 2008, 18:54 pm
por carlitos.dll
iDStore lista ficheros y directorios ocultos de ficheros .DS_Store
Nivel Web
MichBukana 0 3,277 Último mensaje 29 Agosto 2013, 09:21 am
por MichBukana
Copia de ficheros binarios.
Programación C/C++
cartorami 2 1,597 Último mensaje 5 Septiembre 2016, 12:09 pm
por cartorami
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines