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

时间:2015-09-23 14:16:55

标签: java sftp jsch

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

enter image description here

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

Java是否有要使用的本机SFTP库?当我搜索时,我只在网上找到了一个名为JSch的图书馆。

我将如何开始运行此示例? 任何提示赞赏, 谢谢!

2 个答案:

答案 0 :(得分:4)

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之类的命令。另见

答案 1 :(得分:1)

SFTP支持RenameFile和CopyRemoteFile操作,但仅在内存服务时才从SFTP协议版本5或6开始。我们的产品SecureBlackbox(Java版)支持这些操作,但是必须确保您的服务器支持所需的SFTP版本,从而支持您需要的文件操作。