当前位置: 首页 > 知识库问答 >
问题:

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

孟嘉歆
2023-03-14

我正在尝试使用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();
  }
}

共有1个答案

太叔志尚
2023-03-14

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

channelsftp.put(new FileInputStream(f1),f1.getName(),channelsftp.overwrite);

 类似资料:
  • 我需要使用JSch库编程文件传输。我有一个包含两个文件夹的简单目录- 在SFTP\u 1文件夹中,我有一个位图图像。而SFTP\U 2文件夹只是一个空文件夹。我的目标是使用SFTP将图像从SFTP\U 1传输到SFTP\U 2。 以下是迄今为止我的代码: 我想做的是简单地将文件从我机器中的一个目录传输到另一个目录。任何提示,谢谢!

  • 问题内容: 我的网站目前已经被自动纳入该网站的一部分,3个CSS文件,我也 没有 访问源即 index.html的 网站 ,但我有 访问我的网站的CSS文件。 我正在尝试使用自己的样式来覆盖我的网站CSS文件,并创建一个新的CSS文件,其中包含我要在网站上覆盖的所有样式。 我尝试使用,并将其放在最后一个CSS文件的顶部,但这不会覆盖最后一个CSS文件的样式。 我该如何实现? 问题答案: 除了使用大

  • 问题内容: with open(“games.txt”, “w”) as text_file: print(driver.current_url) text_file.write(driver.current_url + “\n”) 我现在正在使用此代码,但是当它写入文件时,它将覆盖旧内容。我如何能简单地添加它而不删除已经存在的内容。 问题答案: 而不是使用(附加)功能模式:

  • 好吧,我对C++和一般的编码还比较陌生。我正在研究一个密码生成器,它随机生成一个介于33和126之间的数字,然后使用相应的ASCII代码并创建一个用户指定长度的密码。然后我想使用Boost::Filesystem创建一个passwords文件夹,并在该文件夹中使用std::ofStream创建一个包含密码的文本文件。我已经想好了如何创建文件夹,以及如何创建文件。但是...我需要一种方法来确定文件夹

  • 问题内容: 在Unix上,我可以使用\r(回车\b键)或(退格键)覆盖Shell中的当前行(在已经可见的文本上打印)。 我可以通过Python脚本在Windows命令行中实现相同的效果吗? 我尝试了curses模块,但Windows上似乎不可用。 问题答案: 是:

  • 我正在尝试使用多部分实体方法上传文件。但它失败,错误说{“错误”:“文件参数值'无'无效”} 我的代码是: File File = new File(" C:/Users/SST-06/Desktop/new . txt "); 我的实体文件包含所有提到的参数。 -hkYO-pblk 0 uqlxjtvklrbkosxz 7 mye-8 wbvbvanx Content-Disposition:f