java - 如何使用 SSHJ 通过 SCP 流式传输文件?

标签 java ssh scp sshj

我正在使用 SSHJ 库 ( https://github.com/shikhar/sshj )。

我可以使用 sshClient.newSCPFileTransfer(); 获取我的 SCPClient 对象,但是随后调用 scpClient.download() 需要作为目标文件路径的 String 或 LocalDestFile 对象。我想要的只是打开一个流来下载文件。有没有一种方法可以使用 SSHJ 轻松地做到这一点?

我查看了 LocalDestFile 的不同实现,但似乎没有任何一个适用于这个用例。

具体用例是下载远程文件并将其流式传输到 Web 应用程序的客户端浏览器。我必须为此使用 SCP,因此想使用 SSHJ 库。

最佳答案

我能够通过扩展 InMemoryDe​​stFile 类并将我想要的 OutputStream 对象传递到构造函数并让它在 getOutputStream 中返回来解决这个问题> 方法。

以下 GIST 中显示了一个示例:https://gist.github.com/2157565

似乎您需要在完成后自行关闭 OutputStream,因此请注意这一点。

关于java - 如何使用 SSHJ 通过 SCP 流式传输文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9800323/

相关文章:

java - 以正确的顺序和良好的性能处理 JMS 消息

java - 如何从java代码在unix终端中执行外部工具?

ssh - Ansible 无法使用不同用户在本地主机上创建文件夹

git - 无法通过 HTTP 克隆远程 Git 镜像,但可以通过 SSH

ruby - 让 Ruby NET::SCP 或 NET::SFTP 使用不同的密码

java - 打印文件 Java 的行时出现问题

java - 如何使用 Selenium、Java 从 div 元素中获取文本?

bash - 如何在开始 SSH 连接之前和 SSH 连接关闭之后运行本地命令?

linux - 如何将文件从远程服务器复制到本地计算机?

bash - 如何比较重复目录之间的文件大小匹配?