2013-07-04 22 views
13

Sto provando a caricare due file su un server con SFTP usando JSch. Funziona bene per caricare i file se la directory è vuota ma voglio caricare lo stesso file più e più volte (semplicemente cambiando un ID all'interno) ma non riesco a capire come farlo. C'è qualche parametro statico in JSch chiamato OVERWRITE ma non riesco a scoprire come usarlo.Caricamento SFTP Java usando JSch, ma come sovrascrivere il file corrente?

Qualcuno ha voglia di mostrarmi come aggiungere questa impostazione?

Questo è il mio codice corrente:

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

risposta

17

non ho mai usato JSch ma dagli sguardi di esso ci sono un certo numero di metodi di overload put dove si abbina la tua firma corrente con l'aggiunta di una "modalità "parametri e sembra che ci sia tre parametri della modalità statiche della classe ChannelSftp (OVERWRITE = 0, RESUME = 1, APPEND = 2) così si dovrebbe essere in grado di utilizzare:

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