Java中使用FTP协议复制远程文件(使用sendCommand cp -p到Linux)

时间:2015-11-03 01:49:47

标签: java ftp apache-commons-net

我正在使用Apache FTPClient。我是一个像cp -p这样的文件夹中的文件副本,但是来自Java。我怎么能用'sendCommand'方法做到这一点,还是可以用其他任何方式? rename方法移动文件但不保留备份副本。

1 个答案:

答案 0 :(得分:2)

没有通过FTP协议复制远程文件的标准方法。有些FTP服务器支持专有或非标准扩展。

因此,如果您的服务器是mod_copy module的ProFTPD很幸运,您可以使用FTP.sendCommand发出以下两个命令:

CPFR sourcepath
CPTO targetpath

第二种可能性是您的服务器允许您执行任意shell命令。这也不常见。如果您的服务器支持此功能,您可以使用SITE EXEC命令:

SITE EXEC cp -p sourcepath targetpath

另一种解决方法是打开与FTP服务器的第二个连接,并通过将被动模式数据连接管道连接到活动模式数据连接,使服务器将文件上载到自身。 PHP中此解决方案的实现显示在FTP copy a file to another place in same FTP

如果这两种情况都不起作用,您只能将文件下载到本地临时位置并将其重新上传回目标位置。

另见: