如何使用sshj库将CSV字节串写入SFTP服务器且无需本地文件?
使用sshj直接将CSV字节串写入SFTP服务器的可行方案
完全不需要更换库,sshj的SFTPClient其实提供了支持InputStream的put重载方法,只是你可能没留意到。具体实现步骤如下:
- 将CSV字节串转换成
ByteArrayInputStream(内存流,无需本地文件) - 调用
SFTPClient.put(InputStream, String)方法直接写入远程SFTP路径
示例代码:
import net.schmizz.sshj.sftp.SFTPClient; import java.io.ByteArrayInputStream; import java.io.InputStream; import java.nio.charset.StandardCharsets; import java.io.IOException; // 假设已完成SFTP连接初始化,得到有效的SFTPClient实例 SFTPClient sftpClient = ...; String csvString = "你要写入的CSV内容,比如字段1,字段2,字段3\n值1,值2,值3"; byte[] csvBytes = csvString.getBytes(StandardCharsets.UTF_8); try (InputStream inputStream = new ByteArrayInputStream(csvBytes)) { // 替换为SFTP服务器上的目标文件路径 sftpClient.put(inputStream, "/remote/directory/target.csv"); } catch (IOException e) { // 根据业务场景处理异常,比如日志记录、告警等 e.printStackTrace(); }
补充说明
这个put方法的签名是void put(InputStream src, String dst),属于SFTPClient的标准重载方法,只要你的sshj版本不是过于陈旧(比如0.10.x之前的极老版本),都应该支持该方法。如果不确定版本,可以检查依赖的jar包版本,建议使用0.27.0及以上的稳定版。
内容的提问来源于stack exchange,提问作者user3008362
相关产品推荐
相关产品推荐

