wolfmanzyj 2015-02-07 02:28 采纳率: 0%
浏览 5888

FtpClient 中completePendingCommand 方法卡住

自己的代码如下:

    RandomAccessFile raf = new RandomAccessFile(localFile, "r");
    OutputStream out;

            //读写操作
            ..................

            out.flush();
    raf.close();
    out.close();

    Log.i(TAG, "befor setDefaultTimeout");
    CLogger.i(TAG, "befor setDefaultTimeout");

    ftpClient.setDefaultTimeout(1000 * 10);

    Log.i(TAG, "befor completePendingCommand");

    boolean result = ftpClient.completePendingCommand();

    Log.i(TAG, "after completePendingCommand");

从log中看出:
befor completePendingCommand 已打印
after completePendingCommand 未打印
可以判断是completePendingCommand方法一直没有返回。

我看了FtpClient 的源码,发现completePendingCommand做的事比较简单:
public boolean completePendingCommand() throws IOException
{
return FTPReply.isPositiveCompletion(getReply());
}
不知道为何会阻塞。
求高人指点,多谢!!

  • 写回答

2条回答 默认 最新

  • Lemon-Girl 2017-07-25 15:15
    关注

    查了一下,completePendingCommand()会一直在等FTP Server返回226 Transfer complete,但是FTP Server只有在接受到InputStream执行close方法时,才会返回。所以先要执行InputStream的close方法。

    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料