Quisiera saber si alguien me puede ayudar a resolver este problema.
El caso es tengo un programa que corre en una máquina linux que lo que hace es copiar ficheros que estan en una maquina windows, la carpeta que quiero copiar que se llama docs está montada en el servidor linux por samba, esta carpeta tiene miles de ficheros de 300 k en formato pdf en total son decenas de Gigas.
Ahora bien no sé por qué razón el programa se demora tantoooo copiando al punto que la velocidad de copiado es de 180 MB en 1 hora, muy muy lento a ese ritmo se demoraría en copiar todo en varios días, aqui les pongo el código del método que copia el fichero a ver si me pueden ayudar:
Código PHP:
public static void copy(String source_name, String dest_name, boolean override) throws IOException
{
File source_file = new File(source_name);
File destination_file = new File(dest_name + System.getProperty("file.separator") + source_file.getName());
FileInputStream source = null;
FileOutputStream destination = null;
byte[] buffer;
int bytes_read;
try {
// Primero asegurarse de que el source_file
// Existe, es un fichero y se puede leer.
if (!source_file.exists() || !source_file.isFile())
throw new FileCopyException("FileCopy: no existe el fichero origen: " + source_name);
if (!source_file.canRead())
throw new FileCopyException("FileCopy: no hay permisos de lectura en fichero origen: " + source_name);
// Si el destino existe asegurarse de que se puede escribir
// y preguntar antes de sobreescribirlo.Si el destino no existe asegurarse que el directorio existe y es escribible
if (destination_file.exists()) {
if (destination_file.isFile()) {// isFile
if (!destination_file.canWrite())
throw new FileCopyException("FileCopy: no existen permisos de escritura "+"file is unwriteable: " + dest_name);
if (!override)
throw new FileCopyException("FileCopy: cancelado no se puede sobreescribir el fichero.");
}
else
throw new FileCopyException("FileCopy: destination is not a file: " + dest_name);
}
else {
File parentdir = parent(destination_file);//Vuelvo a coger el directorio no hace falta se puede cambiar
if (!parentdir.exists())
throw new FileCopyException("FileCopy: el direcorio destino no existe "
+ dest_name);
if (!parentdir.canWrite())
throw new FileCopyException("FileCopy: no existen permisos de escritura " +
"en el Directorio destino" + dest_name);
}
// If we've gotten this far, then everything is okay; we can
// copy the file.
source = new FileInputStream(source_file);
destination = new FileOutputStream(destination_file);
buffer = new byte[1024*500];
while(true) {
bytes_read = source.read(buffer);
if (bytes_read == -1) break;
destination.write(buffer, 0, bytes_read);
}
//System.out.print(source_file.getName()+ "Copiado OK");
}
// No importa que pase siempre hay que cerrar cualquier streams que se haya abierto.
finally {
if (source != null)
try { source.close(); } catch (IOException e) { ; }
if (destination != null)
try { destination.close(); } catch (IOException e) { ; }
}
}
Saludos