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

Cof*_*fee 0 java sftp jsch

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

在此输入图像描述

在该SFTP_1文件夹中,我有一个位图图像。而且该SFTP_2文件夹只是一个空文件夹。

Java 是否有本地 SFTP 库可供使用?当我搜索时,我只找到了一个名为JSch 的在线图书馆。

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

Mar*_*ryl 5

Java 中没有本机 SFTP 支持。

您已经发现,JSch 库可能是 Java 中使用最广泛的 SFTP 实现(尽管原始 JSch 不再维护,并且与最新服务器不兼容。请考虑使用mwiede 的 fork)。


SFTP_1如果您想使用SFTP_2JSch将文件从 移动到,请使用以下ChannelSftp.rename方法

channelSftp.rename("/SFTP_1/file.txt", "/SFTP_2/file.txt");
Run Code Online (Sandbox Code Playgroud)

如果你想复制文件,那就更复杂了。虽然有copy-fileSFTP 协议的扩展,但只有少数 SFTP 服务器支持它。在最广泛使用的 OpenSSH SFTP 服务器中,仅最新版本 9.0支持它。JSch 库也不支持它。

因此,最后,您唯一的选择可能是将文件下载到本地临时文件夹并将其上传回新位置(或使用流,以避免临时文件)。或者使用 shell 会话来调用诸如 之类的命令cp。也可以看看