个性化阅读
专注于IT技术分析

如何显示使用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 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());

这些函数可以具有第三个参数, 该参数应该是扩展sftpProgressMonitor的进度监视器类。

你可以在此处阅读有关如何使用JSCH(sftp)将文件上传到服务器的更多信息。

赞(0)
未经允许不得转载:srcmini » 如何显示使用JSCH(SFTP)Android进行上传和下载的进度

评论 抢沙发

评论前必须登录!