如何显示使用JSCH(SFTP)Android进行上传和下载的进度

使用JSCH库, 使用Java创建sftp客户端变得非常容易。
JSch是SSH2的纯Java实现(我们可以使用SFTP Channel)。 JSch允许你连接到sshd服务器并使用端口转发, X11转发, 文件传输等, 并且可以将其功能集成到你自己的Java程序中。 JSch已获得BSD样式许可。
你只能显示上载和下载的进度, 使用放置和获取的方法, 我们将添加一个新类, 该类将在类似以下参数的第三个参数中检索每个进程的进度:
首先, 我们需要创建一个可以为你处理此问题的类, 它非常简单:

package com.myxxxxxxpackage.something; // Important to import the SftpProgressMonitor of JSCHimport com.jcraft.jsch.SftpProgressMonitor; // Change the class name if you wantpublic 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 methodpublic 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 destinationSystem.out.println(dest); // Destination pathSystem.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, 0System.out.println(max); //Total ilesizeSystem.out.println(this.count); // Progress in bytes from the total}return(true); }public void end(){System.out.println("finished"); // The process is overSystem.out.println(this.percent); // ProgressSystem.out.println(max); // Total filesizeSystem.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 Downloadsftp.get("remotefilepath.txt", "mynewlocalfilepath.txt", new progressMonitor());

这些函数可以具有第三个参数, 该参数应该是扩展sftpProgressMonitor的进度监视器类。
【如何显示使用JSCH(SFTP)Android进行上传和下载的进度】你可以在此处阅读有关如何使用JSCH(sftp)将文件上传到服务器的更多信息。

    推荐阅读