FTP クライアント (org.apache.commons.net.ftp.FTPClient) は、FTP がまだアップロードしている間に別のクライアントがファイルを消費 (削除/移動) するとハングアップします。ファイルをアップロードするコードは次のとおりです。
ftpClient = getFTPConnection();
BufferedInputStream buffIn = new BufferedInputStream(inputStream);
byte[] buffer = new byte[8192];
OutputStream os = ftpClient.storeFileStream(filename);
int readCount = 0;
while ((readCount = buffIn.read(buffer)) > 0) {
os.write(buffer, 0, readCount);
}
os.close();
buffIn.close();
inputStream.close();
ftpClient.completePendingCommand(); //!stuck here!
ftpClient.rename(filename, "uploadRename.txt");
ftpClient.logout();
ftpClient.disconnect();
アップロード中にファイルが削除されると、os.write は作業を終了します (問題ありません)。この権利を理解した場合、2番目のコマンドを作成するには ftpClient.completePendingCommand() を実行する必要があります。削除することは解決策ではありません。ftpClient がハングする理由を知っている人はいますか? completePendingCommand が ftp から必要なものを取得できない場合、エラー メッセージまたはタイムアウトが発生することを期待しています。
ありがとう