使用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)将文件上传到服务器的更多信息。
评论前必须登录!
注册