-1

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

1 回答 1

1

正如评论所建议的,将代码放在 try-catch 块中并捕获异常。我可以提供的进一步建议;

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

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

于 2012-09-07T09:16:58.353 回答