Ответ 1
В 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());