web-dev-qa-db-ja.com

Java JSchを使用したSFTPアップロードですが、現在のファイルを上書きする方法は?

JSchを使用して、SFTPを使用して2つのファイルをサーバーにアップロードしようとしています。ディレクトリが空の場合はファイルをアップロードしても問題ありませんが、同じファイルを何度もアップロードします(内部でIDを変更するだけです)が、これを行う方法がわかりません。 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();
  }
}
18
Sebastian L

私はJSchを使用したことがありませんが、その外観から、現在の署名と「モード」パラメータの追加で一致し、ChannelSftpクラスに3つの静的モードパラメータがあるように見えるオーバーロードされたputメソッドがいくつかあります(OVERWRITE = 0、RESUME = 1、APPEND = 2)ので、使用できるはずです:

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

21
Hyddan