-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にパックされ、WindowsServerのOSGI内で実行されます。リモートサーバーはUnixベースです。

何か提案をいただければ幸いです。

更新:mhanによって提案されたように、私はバッファーを使用しましたが、問題は解決したようです:

BufferedOutputStream out = new BufferedOutputStream(channel.put(filename + "_"));   
out.write(messageText.getBytes());
4

1 に答える 1

1

コメントが示すように、コードをtry-catchブロック内に配置し、Exceptionをキャッチします。私が与えることができるさらなる提案;

1)バッファを導入して、パフォーマンスが向上するかどうかを確認しますか。

2)書き込む前に、リモートファイルが使用可能かどうかを確認できますか?

于 2012-09-07T09:16:58.353 に答える