Переместить несколько файлов в местоположение SFTP за одну операцию - PullRequest
0 голосов
/ 24 апреля 2018

Мне нужно переместить несколько файлов из папки A в B в папке SFTP.Я использую библиотеку Jsch в Java.В настоящее время моя реализация делает это один за другим, вызывая метод move , определенный ниже.

Можем ли мы передать его за один раз, так как у меня уже есть все пути к исходным файлам - это будет более эффективновместо множественного ввода-вывода назад и вперед.

    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();
    }

1 Ответ

0 голосов
/ 24 апреля 2018

В протоколе SFTP нет операции пакетного перемещения. Так что нет способа реализовать то, что вы просите.


Но вы должны повторно использовать ChannelSftp. Нет необходимости открывать и закрывать его для каждого запроса на перемещение. На самом деле похоже, что вы даже открываете / закрываете целое SFTP-соединение для каждого запроса.

То, что я на самом деле предложил вам полгода назад, в моем ответе на ваш Получение сеанса и SFTP-канала в Java с использованием библиотеки JSch , на которую вы даже не удосужились даже ответить.

...