我正在编辑一个使用com.jcraft.jsch库的Java应用程序,使用channel.put()
执行SFTP上传,其中channel
是ChannelSftp的实例。
我尝试做的是添加一个用户控件,允许上传暂停和恢复。
我已经看到com.jscape.inet.sftp库有一个Sftp类,它有方法interrupt()
和resumeUpload()
,看起来他们会做我需要的
但是,如果我能提供帮助,我不想重写应用程序的上传功能。有什么方法可以让我轻松地让当前的实现暂停并随意恢复?
答案 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来阻止它。