Buscamos por todo el mundo on line para tenerte la respuesta para tu duda, en caso de inquietudes puedes dejar tu comentario y te responderemos sin falta, porque estamos para servirte.
Solución:
Si está utilizando apache commons net FTPClient
hay un método directo para mover un archivo de una ubicación a otra ubicación (si el user
tiene los permisos adecuados).
ftpClient.rename(from, to);
o, si está familiarizado con ftp commands
puedes usar algo como
ftpClient.sendCommand(FTPCommand.yourCommand, args);
if(FTPReply.isPositiveCompletion(ftpClient.getReplyCode()))
//command successful;
else
//check for reply code, and take appropriate action.
Si está utilizando cualquier otro cliente, consulte la documentación. No habrá muchos cambios entre las implementaciones del cliente.
ACTUALIZAR:
El enfoque anterior mueve el archivo a to
directorio, es decir, el archivo no estará allí en from
directorio nunca más. Básicamente, el protocolo ftp está destinado a transferir los archivos desde local <-> remote
o remote <-> other remote
pero no para transferir en el servidor.
El trabajo aquí sería más simple, obtenga el archivo completo en un local InputStream
y escríbalo de nuevo en el servidor como un nuevo archivo en el directorio de copia de seguridad.
para obtener el archivo completo,
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ftpClient.retrieveFile(fileName, outputStream);
InputStream is = new ByteArrayInputStream(outputStream.toByteArray());
ahora, almacene esta transmisión en el directorio de respaldo. Primero necesitamos cambiar el directorio de trabajo al directorio de respaldo.
// assuming backup directory is with in current working directory
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);//binary files
ftpClient.changeWorkingDirectory("backup");
//this overwrites the existing file
ftpClient.storeFile(fileName, is);
//if you don't want to overwrite it use storeUniqueFile
Espero que esto te ayude..