Java - Dudas de planteamiento con File para Backup

 
Vista:
sin imagen de perfil

Dudas de planteamiento con File para Backup

Publicado por Code (2 intervenciones) el 05/04/2016 15:34:05
Hola comunidad! Tengo una duda de planteamiento con un pequeño proyecto que estoy haciendo, a ver si podéis aconsejarme (no necesito líneas de código, sólo algún consejo de cómo mejorar mi planteamiento)

Me he planteado hacer un pequeño programa que me haga un Backup de mis *.java en mi carpeta de Workspace y los copie en otro sitio. Partiendo de _fOrigen, guardo los ficheros listados en un array arrPathO.
1
2
3
4
5
6
7
8
9
10
11
12
13
public class Lector {
	File _fOrigen = new File("C:\\Users\\ElUsuario\\workspace");
	File _fDestino = new File("C:\\Users\\ElUsuario\\Google Drive");
	File[] arrPathO;
	byte nArrayPadre;
	public Lector() {
	}
	public byte cuantosHijos(File _fOrigen){
		arrPathO = _fOrigen.listFiles();
		nArrayPadre = (byte)arrPathO.length;
		return nArrayPadre;
	}
}
El método cuantosHijos me dice la longitud del array o en número de elementos en la carpeta de origen.
La idea actual es que por cada una de las carpetas contenidas, debiese crear un Thread que me fuese recorriendo esa carpeta de manera independiente. El INCONVENIENTE:
Al arrancar el Thread; este, obtendrá las carpetas del nivel inferior. Pero sigo hallándome en la misma situación: ¿Y si los proyectos *.java no están aquí? Tendría que crear otro Thread para adentrarme otra vez en las subcarpetas.
No quiero escribir un código redundante de cincuenta bucles for.
En la versión anterior era lo que había hecho, y es una chapuza.
Por otro lado tendo pequeños métodos de comprobación como: “esJava”(Donde comprueba si el fichero es un archivo, y en caso de serlo comprueba si termina en *.java. Pero sólo me sirve si ya estoy en la carpeta final). Y otro método que descarta carpetas con un punto como carácter de inicio (son dos, autogeneradas por Eclipse), y estas son descartadas de ser recorridas por el Thread.

¿Podríais darme algún consejo al respecto del planteamiento? Me siento algo estancado.

PD: Es cierto que para hacer la copia puedo ir a la carpeta y Ctrl+C/Ctrl+V, pero no es lo que busco. Tengo entendido también que Github sincroniza lo que hago con mi IDE, pero tampoco estoy buscando eso.

Muchas gracias por su atención. Cualquier sugerencia es bienvenida. Si hace falta que suba algo más de código de muestra, por si no me he expresado con claridad, lo haré.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Dudas de planteamiento con File para Backup

Publicado por Tom (1831 intervenciones) el 06/04/2016 09:58:53
Normalmente se usa recursividad para recorrer árboles de directorios. Pero la idea de usar además threads parece buena (habría que probarlo, supongo que funcionará bien si el arbol no es demasiado complejo).
Crea un Runnable (o Thread) que examine el contenido de un directorio y, por cada nuevo subdirectorio, lance una nueva instancia de sí mismo.

A grandísimos rasgos:

1
2
3
4
5
6
7
8
9
10
11
12
13
class DirWalker extends Thread {
  File thisDir;
 
  run() {
    for File f in thisDir.files()
      if f isDirectory()
        new DirWalker(f).start();
      else if isJavaFile(f)
        copyFile(f, destinationDir);
      endif;
    endfor;
  }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Dudas de planteamiento con File para Backup

Publicado por Code (2 intervenciones) el 12/04/2016 14:30:45
Gracias por su respuesta! En un breve período de tiempo compartiré el código.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar