微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java SFTP上传使用JSch,但如何覆盖当前文件?

我试图使用JSch将两个文件上传到具有SFTP的服务器.如果目录为空,则上传文件可以正常工作,但我想一遍又一遍地上传相同的文件(只需更改内部的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();
  }
}

解决方法

我从来没有使用JSch,但是从它的外观来看,有一些重载put方法,其中一个匹配您当前的签名,添加一个“mode”参数,并且在ChannelSftp类中似乎有三个静态模式参数(OVERWRITE = 0,RESUME = 1,APPEND = 2),所以您应该可以使用:

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

原文地址:https://www.jb51.cc/java/125567.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐