我是JSch和java的新手.我设法获得了一些代码并以某种方式理解它,但我坚持一点.以下代码从SSH服务器下载文件,但我需要显示复制文件百分比的进度表.我该怎么做.我将非常感谢你的帮助.
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpProgressMonitor;
public class SFTPExample {
public static void main(String args[]) throws Exception {
String user = "root";
String password = "password";
String host = "192.168.0.5";
int port = 22;
String knownHostsFilename = "/home/world/.ssh/known_hosts";
String sourcePath = "/media/nfs/genotype.txt";
String destPath = "genotype.txt";
JSch jsch = new JSch();
jsch.setKnownHosts(knownHostsFilename);
Session session = jsch.getSession(user, host, port);
session.setPassword(password);
session.connect();
ChannelSftp sftpChannel = (ChannelSftp) session.openChannel("sftp");
sftpChannel.connect();
System.out.println("Downloading test file");
sftpChannel.get(sourcePath, destPath);
sftpChannel.exit();
session.disconnect();
}
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*Lin 21
有一个在方法com.jcraft.jsch.ChannelSftp您使用在回调中传递.看着那(这
void get(java.lang.String src, java.lang.String dst, SftpProgressMonitor monitor)
Run Code Online (Sandbox Code Playgroud)
方法和com.jcraft.jsch.SftpProgressMonitor接口.在这个示例代码的底部(它有点乱),你会发现SftpProgressMonitor的一个实现,它使用它的回调方法count(long)并end()操纵一个javax.swing.ProgressMonitor.
count(long)当有一些字节已被传输时会定期调用,并end()在传输结束时被调用.所以SftpProgressMonitor的一个非常简单的imeplementation可能是:
public class SystemOutProgressMonitor implements SftpProgressMonitor
{
public SystemOutProgressMonitor() {;}
public void init(int op, java.lang.String src, java.lang.String dest, long max)
{
System.out.println("STARTING: " + op + " " + src + " -> " + dest + " total: " + max);
}
public boolean count(long bytes)
{
for(int x=0; x < bytes; x++) {
System.out.print("#");
}
return(true);
}
public void end()
{
System.out.println("\nFINISHED!");
}
}
Run Code Online (Sandbox Code Playgroud)
然后我创建一个实例并将其传递给 get()
sftpChannel.get(sourcePath, destPath, new SystemOutProgressMonitor());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17225 次 |
| 最近记录: |