Java SFTP upload uses jsch, but how to overwrite the current file?
I tried to use jsch to upload two files to a server with SFTP If the directory is empty, uploading files works normally, but I want to upload the same files over and over again (just change the internal ID), but I can't figure out how to do this There are some static parameters in jsch called overwrite, but I can't find out how to use it
Anyone cares how I add this setting?
This is my current code:
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(); } }
Solution
I have never used jsch, but from its appearance, there are some overloaded put methods, one of which matches your current signature, adds a "mode" parameter, and seems to have three static mode parameters in the channelsftp class (overwrite = 0, resume = 1, append = 2), so you should be able to use:
channelSftp. put(new FileInputStream(f1),f1. getName(),ChannelSftp. OVERWRITE);