我的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());
答案 0 :(得分:1)
正如评论所示,将代码放在try-catch块中并捕获Exception。我可以给出进一步的建议;
1)您是否想要引入一个缓冲区,看看是否可以提高性能。
2)您可以在写入之前检查远程文件是否可用吗?