如何使用Java JSch库暂停SFTP上传?

时间:2015-03-12 12:21:15

标签: java sftp jsch

我正在编辑一个使用com.jcraft.jsch库的Java应用程序,使用channel.put()执行SFTP上传,其中channelChannelSftp的实例。

我尝试做的是添加一个用户控件,允许上传暂停和恢复。

我已经看到com.jscape.inet.sftp库有一个Sftp类,它有方法interrupt()resumeUpload(),看起来他们会做我需要的

但是,如果我能提供帮助,我不想重写应用程序的上传功能。有什么方法可以让我轻松地让当前的实现暂停并随意恢复?

1 个答案:

答案 0 :(得分:0)

您可能正在使用采用源和目标路径的ChannelSftp.put方法的重载。为了简单起见,你无法控制它。


最佳解决方案是使用仅占用目标路径的put的重载并返回OutputStream

public OutputStream put(String dst) throws SftpException

然后根据需要将数据提供给返回的流,并在需要时暂停。


更简单(但丑陋的imho)解决方案是使用带有源和目标路径的重载以及SftpProgressMonitor interface

public void put(String src, String dst, 
                SftpProgressMonitor monitor) throws SftpException

然后,当您需要暂停转移时,可以通过实施SftpProgressMonitor.count method来阻止它。