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

标签 java ftp ftp-client ftp4j

我使用 sauronsoftware.ftp4j.FTPClient 从 FTP 服务器执行计划文件下载。 我的问题是,当客户端从 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 客户端?

最佳答案

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

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

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

关于java - ftp4j 客户端下载文件时 FTP 服务器死机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16055681/

相关文章:

bash - 强制lftp 打开二进制连接?

java - 位图转换 : Creating bitmap that excludes transparent sides from transparent bitmap

java - 计算合适的文本大小

Java watcher - 如何知道文件是否已完全创建

Java - 如何转义打印控制字符?

python - 在 Python ftplib 中列出名称中包含 UTF-8 字符的文件

java - Maven:使用其 ftp 地址在本地存储库中安装 jar

java - FTP客户端子目录创建

java - ftp 客户端 : org. apache.commons.net.ftp.FTPClient 上的 noClassDefFound 错误

python - 我可以从 Python 脚本控制 PSFTP 吗?