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 得到他想要的东西,我只是期待一个错误消息或超时。
谢谢