Java SFTP上传使用JSch,但如何覆盖当前文件?
发布时间:2020-12-14 16:23:12 所属栏目:Java 来源:网络整理
导读:我试图使用JSch将两个文件上传到具有SFTP的服务器.如果目录为空,则上传文件可以正常工作,但我想一遍又一遍地上传相同的文件(只需更改内部的id),但是我无法弄清楚如何做到这一点. JSch中有一些静态参数叫做OVERWRITE,但是我无法找到如何使用它. 任何人都关心
我试图使用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); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |