【问题标题】:Write to file in sftp without transfer the file在 sftp 中写入文件而不传输文件
【发布时间】:2020-06-29 09:22:41
【问题描述】:

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

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

但是对于 jsch,我还没有想出办法来做到这一点。而且我无法让 chilkat 库工作。

那么,你有解决办法吗?

【问题讨论】:

  • 不传输文件是什么意思?您正在传输完全相同数量的信息并创建一个文件。您是否打算直接将短文本写入远程服务器而不先将其保存在本地?

标签: java database sftp jsch


【解决方案1】:

我假设您想上传内存中的数据/文本。 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 协议和服务器都不关心你从哪里获取数据。

【讨论】: