作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试使用 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/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!