Prezados, boa noite
Estou Usando a classe JSch para manipular os arquivos via SFTP de um servidor para o outro. Já fiz a conexão e estou conseguindo transferir um determinado arquivo de um lado para o outro, porém estou com dúvida quanto ao envio desse arquivo para o outro servidor… a função GET do JSCH me devolve um INPUTSTREAM e a função PUT me pede um OUtpuStream para enviar.
Hoje estou baixando o arquivo para um diretório temporário (Criado em tempo de execução) colocando lá e passando para a função PUT do SFTP o caminho completo.
Porém como a aplicação vai fucionar para várias trasferencias, não posso trabalhar assim… Existe alguma maneira para eu guardar os arquivos em um buffer (Lista de arquivos) para depois transferir um a um no loop dessa lista? Segue meu código…
createFolderTemporarioEnvioSFTP();
connectionOrigem = new Connection().conectaservidor(argument.getCdUsuarioOrigem(),
argument.getDsServidorOrigem(), argument.getCdSenhaOrigem(), 22);
Vector<LsEntry> entries = connectionOrigem.ls("/home/sonda/teste/");
for (LsEntry entry : entries) {
// System.out.println("Lendo arquivo " +entry.getFilename());
if (extensao.equals(".*")) {
OutputStream output = new FileOutputStream(new File("DIRETORIOTEMPORARIO/arquivo"));
connectionOrigem.get(argument.getDsDiretorioOrigem(), output);
output.close();
} else {
if (entry.getFilename().toUpperCase().endsWith(extensao)) {
OutputStream output = new FileOutputStream(new File("DIRETORIOTEMPORARIO/arquivo"));
connectionOrigem.get(argument.getDsDiretorioOrigem(), output);
output.close();
}
}
}
}
//loo´p no diretorio temporario enviando para o servidor de destino
InputStream fis = new FileInputStream(DIREOTRIODESTINO);
connectionDestino.put(fis, dsDiretorioDestino + fileName);
fis.close();
if (argument.getBlEliminaArquivoOrigem().trim().toUpperCase().equals("S")) {
connectionOrigem.rm(argument.getDsDiretorioOrigem());
}
deletefoldertemp()