FTP服务器在ftp4j客户端下载文件时死机

时间:2013-04-17 08:53:21

标签: java ftp ftp-client ftp4j

我使用 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客户端?

1 个答案:

答案 0 :(得分:1)

我不确定你的问题是你的FTP连接突然和无法解决,或者问题是主线程在下载文件之前完成了它的执行。如果我们正在讨论第二种情况,那么也许你可以使用相同FTPClient类的其他方法:

public void download(java.lang.String remoteFileName,
                 java.io.File localFile,
                 FTPDataTransferListener listener)

然后让主线程等到所有下载完成后才结束