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

问题描述 投票:0回答:2

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

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

Java 有原生的 SFTP 库可供使用吗?当我搜索时,我只找到了一个在线图书馆,名为JSch

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

java sftp jsch
2个回答
5
投票

Java 中没有本机 SFTP 支持。

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


如果您想使用 JSch 将文件从

SFTP_1
移动到
SFTP_2
,请使用
ChannelSftp.rename
方法
:

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

如果要复制文件,就比较复杂了。虽然 SFTP 协议有

copy-file
扩展,但只有少数 SFTP 服务器支持它。在最广泛使用的 OpenSSH SFTP 服务器中,仅最新的版本 9.0 支持它。 JSch 库也不支持它。

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

cp
的命令。另请参阅


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.