我正在使用FTPClient将文件存储到在大型机环境中运行的FTP服务器。从技术上讲,它不是存储文件,而是将其用作要在环境中提交的作业。如果FTP服务器在Linux上运行,则可以认为这是执行Shell脚本。
文件发送后,FTP服务器会发回多个响应,但FTPClient会选择第一个作为响应代码和字符串。
示例:
STOR JOB.TXT
125 Sending Job to JES internal reader FIXrecfm 80
QUIT
250-It is known to JES as JOBXXXXX
250 Transfer completed successfully.
所以FTPClient告诉我响应是“ 125将作业发送到JES”,而不是“ 250传输成功完成”。因此,在真正获得良好响应之前,我会过早关闭FTP(如示例所示)。
如何获取与命令相关的所有响应,以确保命令成功或失败?
我尝试将client.getReplyCode()
放入循环中,直到它不等于125,但卡在无限循环中为止。
示例代码:
final OutputStream os = client.storeFileStream("JOB.TXT");
os.write(job.getBytes());
os.close();
int reply = client.getReplyCode();
if ((reply != 125) && (!FTPReply.isPositiveCompletion(reply))) {
throw new IOException("Failed to submit the job, reply " + reply + ", "
+ client.getReplyString());
}