java - 在 sftp 中写入文件而不传输文件
问题描述
我正在寻找一种在 sftp 中写入文件而不传输文件的方法。我与 jsch 合作,我看到 chilkat 有一种方法可以做到这一点:
CkSFtp sftp = new CkSFtp();
sftp.WriteFileText(handle, "ansi", "Hey !");
sftp.CloseHandle(handle);
但是对于jsch,我仍然没有想出办法来做到这一点。而且我无法让 chilkat 图书馆工作。
那么,您有解决方案吗?
解决方案
我假设您要上传内存中的数据/文本。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 协议和服务器都不关心您从哪里获取数据。
推荐阅读
- python - 检查列表中整个确切字符串的输入
- javascript - 从 Javascript 数组中过滤偶数元素
- javascript - 通过 Flask 到 Json 到 D3 的数据帧
- loops - 用于了解给定文本文件有多少考试的 AWK 脚本
- sql - 从雪花中的字符串中删除重音
- angular - 登录后,MSAL (Angular) 不会重定向,但 URL 有值
- css - 使用 ::before 或 ::after 伪元素来维护动画元素的区域?
- python - Pip - 显示包的版本
- sql - 交易程序
- acumatica - 如何将 EPTimecardDetail 记录添加到考勤卡?