JAVA SFTP: при перезаписи файла, хотя JCH.Получение ошибки «Плохое сообщение» - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь скопировать файл из одного каталога в другой в SFTP.В целевом каталоге уже существует файл с таким же именем, я пытаюсь переопределить его.Но когда я выполняю код, я получаю сообщение об ошибке.Ниже приведен Java-код

public static void main(String a[]) {
      try {
        JSch jsch = new JSch();
    Session session = jsch.getSession("root", "localhost", 22);
    session.setPassword("root");
    java.util.Properties config = new java.util.Properties();
    config.put("StrictHostKeyChecking", "no");
    session.setConfig(config);
    session.connect();
    Channel channel = session.openChannel("sftp");
    channel.connect();
    ChannelSftp channelSftp = (ChannelSftp) channel;
    channelSftp.cd("/orderstatus");
    Vector<ChannelSftp.LsEntry> list = channelSftp.ls("*.txt");
    for(ChannelSftp.LsEntry entry : list) {
         System.out.println(entry.getFilename()); 
    }
     channelSftp.rename("test.txt", "/orderstatus/test1/test.txt");

    channelSftp.exit();
    session.disconnect();
    } catch (Exception ex) {
      ex.printStackTrace();
      }
    }

Ошибка Я получаю

5: Bad message
at com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSftp.java:2873)
at com.jcraft.jsch.ChannelSftp.rename(ChannelSftp.java:1950)
at com.rue21.inventory.support.EncryptDecrypt.main(EncryptDecrypt.java:103)

Я хочу, чтобы файл назначения был перезаписан исходным файлом

1 Ответ

1 голос
/ 10 апреля 2019
  1. ChannelSftp.rename перемещает / переименовывает файл.Он не копирует это.

  2. Вы не можете переименовать / переместить файл поверх уже существующего файла.Вы должны удалить целевой файл перед переименованием.

...