Подтвердить что ты не робот

Загрузка Java SFTP с использованием JSch, но как перезаписать текущий файл?

Я пытаюсь загрузить два файла на сервер с помощью SFTP с помощью JSch. Он отлично работает для загрузки файлов, если каталог пуст, но я хочу снова и снова загружать один и тот же файл (просто меняя идентификатор внутри), но я не могу понять, как это сделать. В JSch есть некоторый статический параметр, называемый OVERWRITE, но я не могу узнать, как его использовать.

Кто-нибудь хочет показать мне, как я должен добавить эту настройку?

Это мой текущий код:

public void upload() {
  try {
    JSch jsch = new JSch();
session = jsch.getSession(SFTPUSER, SFTPHOST, SFTPPORT);
session.setPassword(SFTPPASS);
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect();
channel = session.openChannel("sftp");
channel.connect();
channelSftp = (ChannelSftp) channel;
channelSftp.cd(SFTPWORKINGDIR);

    File f1 = new File("ext_files/" + FILETOTRANSFER1);
channelSftp.put(new FileInputStream(f1), f1.getName());
File f2 = new File("ext_files/" + FILETOTRANSFER2);
channelSftp.put(new FileInputStream(f2), f2.getName());

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

Ответ 1

Я никогда не использовал JSch, но из его взглядов существует множество перегруженных меток put, где одна соответствует вашей текущей сигнатуре с добавлением параметра "mode", и, похоже, в ChannelSftp есть три параметра статического режима class (OVERWRITE = 0, RESUME = 1, APPEND = 2), чтобы вы могли использовать:

channelSftp.put(new FileInputStream(f1), f1.getName(), ChannelSftp.OVERWRITE);