via apache.commons.FtpClientでファイルを読んでいます。InputStreamを監視する最良の方法は何ですか?
InputStream inStream = ftp.retrieveFileStream(path + file.getName());
String fileAsString = "";
if(inStream == null){
return;
}
while((c = inStream.read()) != -1){ //this is where the code sometimes just hangs
fileAsString += Character.valueOf((char)c);
}
私の質問は、システムをロックこのから保護するための最も信頼性の高い方法があるものです...これは時間の罰金99.9%に動作しますが、時にはそれだけでread()メソッドで死にます無期限に。私は別のスレッドでタイマーを設定する必要がありますか?それとも簡単な方法がありますか?それはあなたが実際に読む前にブロックせずに読むことができることを確認倍になるようにするだけのドキュメントをざっと見てから
私はこのソリューションが気に入っていますが、利用可能なチェックとread()のチェックの間に何らかの形でコネクションが陳腐化する可能性があると思われます...これは起こりそうもないことですが、 –
接続が遅い場合、available()はファイルの先頭または終わりの前のいずれかに0を返します。 –
FtpClientに深刻な問題がなければ、これは本当の解決策ではありません。 read()はavailable()が0を返す場合にのみブロックする必要があるため、read()で待機するのではなく、このループで待機し、さらに多くのCPUを使用します。 –