Java apache FTPClient正在上载FTP上删除文件

Java apache FTPClient正在上载FTP上删除文件,java,apache,ftp,Java,Apache,Ftp,FTPClient(org.apache.commons.net.ftp.FTPClient)在另一个客户端在ftp仍在上载时使用(删除/移动)文件时挂起。 以下是我如何上传文件的代码: ftpClient = getFTPConnection(); BufferedInputStream buffIn = new BufferedInputStream(inputStream); byte[] buffer = new byte[8192]; OutputStr

FTPClient(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将完成其工作(这是正常的。)但在调用completePendingCommand()后,程序将保持停滞状态。 如果我理解正确,则必须执行ftpClient.completePendingCommand()来生成第二个命令,删除它不是解决方案。 有人知道ftpClient挂起的原因吗? 如果completePendingCommand无法从ftp获取所需内容,我只希望收到错误消息或超时


谢谢

我试图重现您的情况,但当我试图在上传过程中修改文件时,服务器会回复450代码,并且不允许删除文件

顺便说一句,由于Commons net API文档有点简略,您可以尝试在调用
completePendingCommand()
之前调用
ftp.getReplyCode()
方法来了解到底发生了什么

然后,您可以在中匹配回复代码,并决定如何“切换”回复代码