2013-07-04 146 views
13

我想上傳兩個文件到使用JSch的SFTP服務器。如果目錄是空的,它可以很好地上傳文件,但我想一遍又一遍地上傳相同的文件(只需更改內部的ID),但我無法弄清楚如何執行此操作。 JSch中有一些名爲OVERWRITE的靜態參數,但我無法找到如何使用它。Java使用JSch上傳SFTP,但如何覆蓋當前文件?

任何關心向我展示如何添加此設置?

這是我當前的代碼:

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(); 
    } 
} 

回答

17

我從來沒有使用JSch但是從它的外觀有一些重載put方法,其中一個您的當前簽名與又多了一個「模式匹配「參數,似乎是在ChannelSftp類三個靜態模式下的參數(覆蓋= 0,RESUME = 1,APPEND = 2),所以你應該能夠使用:

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