使用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)将文件上传到服务器的更多信息。
推荐阅读
- 如何使用JavaScript在浏览器中检索MP3 / WAV音频文件的持续时间
- @Override注释在Java中是什么意思
- 如何在Java AWT Toolkit中更改框架的标题栏图标(应用程序图标)
- 如何在Android中使用JSCH(SFTP)列出远程路径
- 如何在Android中使用JSCH(SFTP)将文件下载到服务器
- Spring Cloud Alibaba 系列之 Gateway(网关)
- 从结构体内存池初始化到申请释放,详细解读鸿蒙轻内核的动态内存管理
- 从实战角度解读JVM(类加载机制+JVM调优实战+代码优化)
- Spring IOC容器核心流程源码分析