在 Java 中使用 SFTP,如何将文件从一个文件夹传输到另一个文件夹?

Using SFTP in Java, How do I transfer a file from one folder to another?

我有一个包含两个文件夹的简单目录 -

SFTP_1 文件夹中,我有一张位图图像。 SFTP_2 文件夹只是一个空文件夹。

Java 是否有原生 SFTP 库可供使用?当我搜索时,我只找到了一个名为 JSch.

的在线图书馆

我如何开始 运行 这个例子? 任何提示表示赞赏, 谢谢!

SFTP 支持 RenameFile 和 CopyRemoteFile 操作,但如果没记错的话,只能从 SFTP 协议版本 5 或 6 开始。我们的产品 SecureBlackbox(Java 版)支持这些操作,但是有必要确保您的服务器支持所需的 SFTP 版本,从而支持您需要的文件操作。

Java 中没有原生 SFTP 支持。

您发现的 JSch 库可能是 Java 中使用最广泛的 SFTP 实现。


如果要使用 JSch 将文件从 SFTP_1 移动到 SFTP_2,请使用 ChannelSftp.rename method:

channelSftp.rename("/SFTP_1/file.txt", "/SFTP_2/file.txt");

如果要复制文件,就比较复杂了。虽然有 copy-file extension to the SFTP protocol,但只有少数 SFTP 服务器支持它。 JSch 库也不支持它。

所以最后,您唯一的选择可能是将文件下载到本地临时文件夹并将其上传回新位置(或使用流,以避免临时文件)。或者使用 shell 会话来调用像 cp 这样的命令。另见