DataOutputStream.writeBytes(myString)崩溃,无异常

时间:2012-09-07 08:54:50

标签: java spring sftp jsch

我的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());

1 个答案:

答案 0 :(得分:1)

正如评论所示,将代码放在try-catch块中并捕获Exception。我可以给出进一步的建议;

1)您是否想要引入一个缓冲区,看看是否可以提高性能。

2)您可以在写入之前检查远程文件是否可用吗?