如果您使用的是apache commons net
FTPClient,则有一种直接方法将文件从一个位置移动到另一位置(如果
user具有适当的权限)。
ftpClient.rename(from, to);
或者,如果您熟悉
ftp commands,可以使用类似
ftpClient.sendCommand(FTPCommand.yourCommand, args);if(FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) { //command successful;} else { //check for reply pre, and take appropriate action.}如果您使用任何其他客户端,请阅读文档,客户端实现之间不会有太大变化。
更新:
上面的方法将文件移动到
to目录,即文件
from不再在目录中。基本上ftp协议意味着要从服务器中传输文件
local <->remote或从
remote <-> other remote服务器中不传输文件。
解决此问题的方法会更简单,将完整文件获取到本地,
InputStream然后将其作为备份目录中的新文件写回到服务器。
获取完整的文件,
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();ftpClient.retrieveFile(fileName, outputStream);InputStream is = new ByteArrayInputStream(outputStream.toByteArray());
现在,将此流存储到备份目录。首先,我们需要将工作目录更改为备份目录。
// assuming backup directory is with in current working directoryftpClient.setFileType(FTP.BINARY_FILE_TYPE);//binary filesftpClient.changeWorkingDirectory("backup");//this overwrites the existing fileftpClient.storeFile(fileName, is);//if you don't want to overwrite it use storeUniqueFile希望这对您有帮助。



