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

标签 java ftp apache-commons-net

我正在使用 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/

相关文章:

ruby 抽象

java - 在 Java (Apache Net Commons) 中下载整个 FTP 目录

java - 在 Firestore 中仅运行 onAdd 监听器

java - 关于 ReentrantReadWriteLock 的文档矛盾。在公平模式下,最终写锁是否优先于读锁?

iphone - 如何建立 FTP 连接?

python - 使用 FTPwalker 连接到 FTP 资源失败,错误代码为 "Name or service not known"

java - FTP 客户端连接被拒绝

java - 为什么 FTP 列表中的每个目录都有一个 "dot"项

java - 简单的线程管理 - Java - Android

java - 如何在 Android 中明确禁用 HTTP 连接的分块流模式?