我正在尝试使用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();
}
}
答案 0 :(得分:20)
我从来没有使用过JSch,但从外观上看,有一些重载的put方法,其中一个匹配你当前的签名,加上一个“mode”参数,并且ChannelSftp中似乎有三个静态模式参数class(OVERWRITE = 0,RESUME = 1,APPEND = 2)所以你应该可以使用:
channelSftp.put(new FileInputStream(f1), f1.getName(), ChannelSftp.OVERWRITE);