我正在使用 Apache FTPClient
。我在文件夹中复制文件,就像 cp -p 一样,但是来自 Java。我怎样才能使用“sendCommand”方法做到这一点,或者是否可以通过其他方式实现? rename
方法移动文件,但不保留备份副本。
最佳答案
没有通过 FTP 协议(protocol)复制远程文件的标准方法。不过,某些 FTP 服务器支持专有或非标准扩展。
<小时/>所以,如果你幸运的话,你的服务器是 ProFTPD,带有 mod_copy
module ,您可以使用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 所示。 .
<小时/>如果这两种方法都不起作用,您所能做的就是将文件下载到本地临时位置,然后重新上传回目标位置。
另请参阅:
关于java - Java中通过FTP协议(protocol)复制远程文件(使用sendCommand cp -p到Linux),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33490147/