首页 > 解决方案 > 在 sftp 中写入文件而不传输文件

问题描述

我正在寻找一种在 sftp 中写入文件而不传输文件的方法。我与 jsch 合作,我看到 chilkat 有一种方法可以做到这一点:

CkSFtp sftp = new CkSFtp();
sftp.WriteFileText(handle, "ansi", "Hey !");
sftp.CloseHandle(handle);

但是对于jsch,我仍然没有想出办法来做到这一点。而且我无法让 chilkat 图书馆工作。

那么,您有解决方案吗?

标签: javadatabasesftpjsch

解决方案


我假设您要上传内存中的数据/文本。JSch 有很多方法可以上传内存中的数据。

最基本的是:

public void put(InputStream src, String dst) throws SftpException

要使用上述方法上传文本字符串,您可以使用:

InputStream src = new ByteArrayInputStream("Hey !".getBytes(StandardCharsets.UTF_8));
sftp.put(src, "/remote/path/file.txt");

其他选项是:

public OutputStream put(String dst) throws SftpException

关于您的措辞:正如@RealSkeptic 已经评论的那样,无论源是否为文件,您始终传输相同的数据。因此,如果没有“传输”,您将无法上传。SFTP 协议和服务器都不关心您从哪里获取数据。


推荐阅读