Как показать ход выгрузки и загрузки с JSCH (SFTP) Android

Создать sftp-клиент с Java стало действительно легко с помощью JSCH Library.

JSch — это чистая Java-реализация SSH2 (мы можем использовать канал SFTP). JSch позволяет вам подключаться к серверу sshd и использовать переадресацию портов, пересылку X11, передачу файлов и т. Д., И вы можете интегрировать его функциональность в свои собственные программы Java. JSch лицензируется под лицензией в стиле BSD.

Вы можете только отобразить ход выгрузки и загрузки, используя методы put и get, мы просто добавим новый класс, который будет извлекать прогресс каждого процесса в третьем параметре, например:

Во-первых, нам нужно создать класс, который будет решать эту проблему для вас, так просто:

package com.myxxxxxxpackage.something;
// Important to import the SftpProgressMonitor of JSCH
import com.jcraft.jsch.SftpProgressMonitor;
// Change the class name if you want
public class progressMonitor implements SftpProgressMonitor{
private long max                = 0;
private long count              = 0;
private long percent            = 0;
private CallbackContext callbacks = null;
// If you need send something to the constructor, change this method
public progressMonitor() {}
public void init(int op, java.lang.String src, java.lang.String dest, long max) {
this.max = max;
System.out.println("starting");
System.out.println(src); // Origin destination
System.out.println(dest); // Destination path
System.out.println(max); // Total filesize
}
public boolean count(long bytes){
this.count += bytes;
long percentNow = this.count*100/max;
if(percentNow>this.percent){
this.percent = percentNow;
System.out.println("progress",this.percent); // Progress 0,0
System.out.println(max); //Total ilesize
System.out.println(this.count); // Progress in bytes from the total
}
return(true);
}
public void end(){
System.out.println("finished");// The process is over
System.out.println(this.percent); // Progress
System.out.println(max); // Total filesize
System.out.println(this.count); // Process in bytes from the total
}
}

Затем мы будем использовать этот класс в качестве третьего параметра наших функций Put и Get следующим образом:

// in the Upload
sftp.put("mylocalfilepath.txt","myremotefilepath.txt",new progressMonitor());
// in the Download
sftp.get("remotefilepath.txt","mynewlocalfilepath.txt",new progressMonitor());
Ссылка на основную публикацию
Adblock
detector