首页 > 解决方案 > 在单个操作中移动 SFTP 位置中的多个文件

问题描述

我必须将多个文件从文件夹 A 移动到 SFTP 位置的 B。我在java中使用Jsch库。目前我的实现通过调用下面定义的方法来一一完成。

我们可以一次性传输它,因为我已经拥有所有源文件路径 - 这将更有效,而不是来回多次 IO 通信。

    public default boolean move(String srcPath, String destPath) throws JSchException, SftpException
    {
        ChannelSftp channelSftp = getChannel();

        if (channelSftp == null)
            throw new SftpException(0, "Service: ChannelSftp is NULL");

        channelSftp.rename(srcPath, destPath);

        disconnect(channelSftp);

        return true;
    }

public default void disconnect(ChannelSftp channelSftp) throws JSchException
    {
        channelSftp.disconnect();
        Session session =  channelSftp.getSession();
        if(session != null)
            session.disconnect();
    }

标签: javasftpjschmv

解决方案


SFTP 协议中没有批量移动操作。所以没有办法实现你所要求的。


但是你应该重用ChannelSftp. 无需为每个移动请求打开和关闭它。实际上,您甚至可以为每个请求打开/关闭整个 SFTP 连接。

半年前,我实际上已经在我对使用 JSch 库的 Java 获取会话和 SFTP 通道的回答中向您提出了建议,您甚至都懒得回应。


推荐阅读