Carga de Java SFTP usando JSch, pero ¿cómo sobrescribir el archivo actual?
upload (1)
Estoy tratando de cargar dos archivos a un servidor con SFTP usando JSch. Funciona bien cargar los archivos si el directorio está vacío, pero quiero cargar el mismo archivo una y otra vez (solo cambiando una identificación en el interior) pero no puedo averiguar cómo hacerlo. Hay un parámetro estático en JSch llamado OVERWRITE pero no puedo saber cómo usarlo.
¿Alguien quiere mostrarme cómo debo agregar esta configuración?
Este es mi código actual:
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();
}
}
Nunca he usado JSch, pero a juzgar por su apariencia, hay una serie de métodos de carga sobrecargados en los que uno coincide con su firma actual con la adición de un parámetro de "modo" y parece haber tres parámetros de modo estático en la clase ChannelSftp (OVERWRITE = 0, RESUME = 1, APPEND = 2) por lo que debería poder usar:
channelSftp.put(new FileInputStream(f1), f1.getName(), ChannelSftp.OVERWRITE);