1

我使用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);

问题是 download(...) 由单独的线程运行,并且当 FTP 服务器死机时,该线程将继续运行,就像永远一样。有没有办法解决这个问题,或者我应该使用另一个可以处理这种情况的 FTP 客户端?

4

1 回答 1

1

我不确定您的问题是否是您的 FTP 连接突然中断,或者问题是主线程在文件下载之前完成了执行。如果我们谈论的是第二种情况,那么也许您可以使用同一个 FTPClient 类的其他方法:

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

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

于 2013-04-17T09:15:47.940 回答