我使用sauronsoftware.ftp4j.FTPClient从FTP服务器进行预定的文件下载。我的问题是FTP服务器在客户端从它下载文件时突然死亡。我就是这样做的:
for (FTPFile remoteFile : remoteFiles) {
String remoteFileName = remoteFile.getName();
String localPath = ftpDir.getLocalPath() + remoteFileName;
log.debug("Downloading remote file {} to local path {}", remoteFileName, localPath);
try {
client.download(remoteFileName, new File(localPath));
if (!ftpDir.isLeaveFilesOnServer()) {
//Delete remote file
client.deleteFile(remoteFileName);
}
} catch (IllegalStateException e) {
log.error("FTPException ",e);
fcr.addErrorFile(remoteFileName);
} catch (IOException e) {
log.error("FTPException ",e);问题是下载(.)通过单独的线程运行,当FTP服务器死后,该线程将继续运行,就像永远运行一样。有解决这个问题的方法吗?还是应该使用另一个FTP客户端来处理这种情况?
发布于 2013-04-17 09:15:47
我不确定您的问题是FTP连接是否突然而非快速地死亡,或者问题是否是在下载文件之前完成其执行的主线程。如果我们讨论的是第二个场景,那么也许可以使用同一个FTPClient类的另一个方法:
public void download(java.lang.String remoteFileName,
java.io.File localFile,
FTPDataTransferListener listener)然后,让主线程等待,直到所有下载完成才能结束。
https://stackoverflow.com/questions/16055681
复制相似问题