Java apache FTPClient正在上载FTP上删除文件
FTPClient(org.apache.commons.net.ftp.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 = 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()
方法来了解到底发生了什么
然后,您可以在中匹配回复代码,并决定如何“切换”回复代码