我的 Java 方法是通过 SFTP 连接到远程服务器并将字符串写入文本文件:
String messageText = "my very long Text";
ChannelSftp channel = (com.jcraft.jsch.ChannelSftp) session.openChannel("sftp");
channel.connect();
DataOutputStream out = new DataOutputStream(channel.put(filename));
out.writeBytes(messageText);
在将 messageText 写入文件时,该方法大部分时间在准确写入 4355Bytes 后崩溃。即文本文件被写入直到达到一定数量的字符/字节然后停止,但是这不会在每次执行该方法时发生。没有抛出异常,但包含此方法的 spring 工作流此时正在崩溃。
带有该方法的 Java 类被打包在一个 jar 中,并在 Windows Server 上的 OSGI 内部运行。远程服务器是基于 Unix 的。
我很感激任何建议。
更新:按照 mhan 的建议,我使用了一个缓冲区,它似乎已经解决了这个问题:
BufferedOutputStream out = new BufferedOutputStream(channel.put(filename + "_"));
out.write(messageText.getBytes());