gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 22:34:13 27 4
gpt4 key购买 nike

我正在尝试使用 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 中似乎有三个静态模式参数class (OVERWRITE = 0, RESUME = 1, APPEND = 2) 所以你应该能够使用:

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

关于使用JSch的Java SFTP上传,但如何覆盖当前文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17473398/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com