All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.y3tu.tool.ssh.ftp.FileProgressMonitor Maven / Gradle / Ivy

package com.y3tu.tool.ssh.ftp;

import com.jcraft.jsch.SftpProgressMonitor;
import lombok.extern.slf4j.Slf4j;

import java.text.DecimalFormat;

/**
 * 文件上传监控
 *
 * @author y3tu
 * @date 2018/4/9
 */
@Slf4j
public class FileProgressMonitor implements SftpProgressMonitor {
    /**
     * 记录已传输的数据总大小
     */
    private long transfered;
    /**
     * 记录文件总大小
     */
    private long fileSize;
    /**
     * 打印日志时间间隔
     */
    private int minInterval = 100;
    /**
     * 开始时间
     */
    private long start;
    private DecimalFormat df = new DecimalFormat("#.##");
    private long preTime;

    /** 传输开始 */
    @Override
    public void init(int op, String src, String dest, long max) {
        this.fileSize = max;
        log.info("Transferring begin.");
        start = System.currentTimeMillis();
    }

    /** 传输中 */
    @Override
    public boolean count(long count) {
        if (fileSize != 0 && transfered == 0) {
            log.info("Transferring progress message: {}%", df.format(0));
            preTime = System.currentTimeMillis();
        }
        transfered += count;
        if (fileSize != 0) {
            long interval = System.currentTimeMillis() - preTime;
            if (transfered == fileSize || interval > minInterval) {
                preTime = System.currentTimeMillis();
                double d = ((double) transfered * 100) / (double) fileSize;
                log.info("Transferring progress message: {}%", df.format(d));
            }
        } else {
            log.info("Transferring progress message: " + transfered);
        }
        return true;
    }

    /** 传输结束 */
    @Override
    public void end() {
        log.info("Transferring end. used time: {}ms", System.currentTimeMillis() - start);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy