Java - [Problema]Mejor forma de copiar archivos

 
Vista:

[Problema]Mejor forma de copiar archivos

Publicado por Matias (5 intervenciones) el 30/03/2017 21:02:36
Buen día, estoy realizando un programa para copiar grandes cantidades de archivos, alrededor de 80TB de un disco a otro y me he encontrado que me JAVA hay varios métodos para copiar archivos de un disco a otro, quería saber si me podían ayudar a saber cuál es el más eficiente en cuanto a tiempo.

Además, querías preguntarles maneras de optimizar el tiempo, estaba pensando que podría poner varios threads a copiar archivos, pero ¿Cómo defino cuantos es lo más eficiente?

Estos temas de eficiencia me traen liado, les agradecería mucho la ayuda!


Algunos de los métodos que encontré para copiar archivos son:

1-
Que creo que es la más normal:
1
2
3
4
5
6
7
8
9
FileInputStream in = new FileInputStream(inFile);
FileOutputStream out = new FileOutputStream(outFile);
 
int c;
while( (c = in.read() ) != -1)
	out.write(c);
 
in.close();
out.close();

2-
1
2
3
4
5
FileChannel in = (new FileInputStream(s)).getChannel();
FileChannel out = (new FileOutputStream(t)).getChannel();
in.transferTo(0, s.length(), out);
in.close();
out.close();

3-
Podría ser llamando a ""Runtime.exec" y copiandolo mediante la consola de windows (el programa se ejecutará el windows)

4-
1
2
3
4
5
6
7
8
9
10
11
public static void copyFile_Java7(String origen, String destino) throws IOException {
    Path FROM = Paths.get(origen);
    Path TO = Paths.get(destino);
    //sobreescribir el fichero de destino, si existe, y copiar
    // los atributos, incluyendo los permisos rwx
    CopyOption[] options = new CopyOption[]{
      StandardCopyOption.REPLACE_EXISTING,
      StandardCopyOption.COPY_ATTRIBUTES
    };
    Files.copy(FROM, TO, options);
}



Gracias.
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

[Problema]Mejor forma de copiar archivos

Publicado por Renzo (232 intervenciones) el 30/03/2017 22:33:54
La opción 3 se largamente más eficiente que las otras, pues la copia la hace el SO.

Renzo
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

[Problema]Mejor forma de copiar archivos

Publicado por Tom (1831 intervenciones) el 31/03/2017 15:41:30
Te falta, al menos, una opción más (la más simple). Y seguramente, el uso de threads no te ayudaría mucho (al contrario) si todos los ficheros los vas a copiar al mismo disco.

http://www.journaldev.com/861/java-copy-file
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