2013-07-04 11 views
13

Próbuję przesłać dwa pliki na serwer z SFTP przy użyciu JSch. Dobrze jest przesłać pliki, jeśli katalog jest pusty, ale chcę przesłać ten sam plik w kółko (po prostu zmieniając identyfikator w środku), ale nie mogę wymyślić, jak to zrobić. W JSch jest jakiś statyczny parametr o nazwie OVERWRITE, ale nie mogę go znaleźć.Przesyłanie Java SFTP przy użyciu JSch, ale jak zastąpić bieżący plik?

Czy ktoś chce mi pokazać, jak dodać to ustawienie?

To jest mój bieżący kod:

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

Odpowiedz

17

nigdy nie używałem jsch ale z niecierpliwością na to istnieje liczba przeciążonych metod put gdzie jeden odpowiada aktualnej podpisu z dodatkiem „trybie "parametr i wydaje się, że trzy statyczne parametry trybu w klasie ChannelSftp (zastępowanie = 0, CV = 1, dołącz = 2), więc powinieneś być w stanie używać:

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

Powiązane problemy