JSch sftp工作摘要


private final String host;
    private final String userAccount;
    private final String keyDir;
    private ChannelSftp sftpChannel;
    private Session session;
    private Channel channel

public void send(List<Path> filesToSend, String destination) throws SftpException, IOException {
    if (sftpChannel == null) {
        logger.error("Failed to create SFTP channel");
    }
    for (Path file : filesToSend) {
        send(file, destination);
    }
     //summary of sent files over sftpchannel
} 
public void send(Path file, String destination) throws SftpException, IOException {
    if (sftpChannel == null) {
        logger.error("Failed to create SFTP channel");
    }
    sftpChannel.put(Files.newInputStream(file), destination + File.separator + file.getFileName());
} //end send

}//end class

在所有的文件都发送完之后,谁能告诉我怎样才能算出已经成功发送了多少个文件?不重要,但如果有任何失败或任何形式的监控。我如何用Jsch库做到这一点。

我想在我的日志里写一些东西,比如:

准备发送[14]文件

发送文件数是[14]…
public void send(List<Path> filesToSend, String destination) {
        logger.debug("Preparing to send ["+filesToSend.size()+"] files");
        if (sftpChannel == null) {
            logger.error("Failed to create SFTP channel");
        }
        int successCount = 0;
        int failedCount = 0;
        for (Path file : filesToSend) {
            try {
              send(file, destination);
              successCount++;
            } catch (Exception e) {
              failedCount++;
            }
        }
        //summary of sent files over sftpchannel
        logger.debug("Successfully sent " + successCount);
        logger.debug("Failed to sent " + failedCount);
    } 

既然jsch在发生错误时会抛出异常,为什么不实现自己的计数器(只使用int就可以了)?

最新更新