В com.jcraft.jsch.ChannelSftp есть методы, которые вы используете для передачи обратного вызова. Посмотрите на
void get(java.lang.String src, java.lang.String dst, SftpProgressMonitor monitor)
методы и com.jcraft.jsch.SftpProgressMonitor интерфейс. Внизу этого примера кода (это немного грязно) вы найдете реализацию SftpProgressMonitor, которая использует методы обратного вызова count(long)
и end()
для управления javax.swing. ProgressMonitor .
count(long)
периодически вызывается, когда передаются некоторые байты, и end()
вызывается после завершения передачи. Таким образом, действительно простое воплощение SftpProgressMonitor может быть:
public class SystemOutProgressMonitor implements SftpProgressMonitor
{
public SystemOutProgressMonitor() {;}
public void init(int op, java.lang.String src, java.lang.String dest, long max)
{
System.out.println("STARTING: " + op + " " + src + " -> " + dest + " total: " + max);
}
public boolean count(long bytes)
{
for(int x=0; x < bytes; x++) {
System.out.print("#");
}
return(true);
}
public void end()
{
System.out.println("\nFINISHED!");
}
}
Я бы тогда создал экземпляр этого и передал бы его get()
sftpChannel.get(sourcePath, destPath, new SystemOutProgressMonitor());