Androidのアプリ開発関連のブログ

org.apache.commons.net.ftp.FTPClient.completePendingCommand()

前回の記事でFTPの接続状態が維持できるようになったが、応答が取得できなくなる場合があってハマった。

細かく例外処理分けて場所特定して、retrieveFileStream()の箇所っぽいことがわかった。
retrieveFileStream()でInputStreamが取得できるはずがnullになってるんだろうね。

で、アクティビティの切り替わりでダメなのかとか思ってたが、
retrieveFileStream()使った後は、completePendingCommand()しないとダメなんだね。

retrieveFileStream()使った後に、
if(!ftp.completePendingCommand()){
  切断処理;
}
って感じで失敗したら次回は再接続するように書いたらうまくいった。

転送port使うコマンドを使ったら、これやらないとコマンドportが把握してない感じかな?
アップロード処理でも同じことになるはず。