Apache FTPClient 在检索文件流期间挂起



亲爱的,我的代码有问题。我的ftp客户端有时会挂起,当它使用"ftpClient.retrieveFileStream()"检索文件时。知道我能做什么吗?我正在使用 apache commons FTP 客户端 v3.4。

  • 我也尝试使用"ftpClient.retrieveFile()",但它没有任何区别。
  • 设置连接和 scoket 超时无济于事
  • 设置被动模式没有帮助
  • 增加缓冲液无济于事

            ftpClient = new FTPClient();
            ftpClient.setBufferSize(1024 * 1024);
            ftpClient.setConnectTimeout(10000);              
            ftpClient.connect(serverAddress);
            ftpClient.login(userName,password);
            ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
            ftpClient.enterLocalPassiveMode();
            ftpClient.setSoTimeout(10000);
            log("retriving file " + remoteFilePath + "...");
            OutputStream output = new FileOutputStream(localFilePath);
            InputStream inputStream = ftpClient.retrieveFileStream(remoteFilePath); // here it is sometimes hanging.
            try {
                IOUtils.copy(inputStream, output);
                output.flush();
            } 
            finally {
                IOUtils.closeQuietly(output);
                IOUtils.closeQuietly(inputStream);
                ftpClient.completePendingCommand();
            }
    

我检索到的最后一条消息通常如下所示:

19:58:21.145 [main] INFO  FTPDAO: retrieving file /Modell/5250/Artikel/25777/lg_keh68bgh_1.jpg...
19:58:21.145 [main] INFO  Log4JFTPCommandListener - >> PASV
19:58:21.462 [main] INFO  Log4JFTPCommandListener - << 227 Entering Passive Mode (195,216,65,165,168,240)
19:58:21.476 [main] INFO  Log4JFTPCommandListener - >> RETR /Modell/5250/Artikel /25777/lg_keh68bgh_1.jpg
19:58:21.490 [main] INFO  Log4JFTPCommandListener - << 150 Connection accepted

当我使用调试器挂起程序时,它看起来挂起

 java.net.SocketInputStream.socketRead0(FileDescriptor, byte[], int, int, int) 
 java.net.SocketInputStream.socketRead(FileDescriptor, byte[], int, int, int) line: 116 
 java.net.SocketInputStream.read(byte[], int, int, int) line: 170   
 java.net.SocketInputStream.read(byte[], int, int) line: 141    

问候马克

我也有这个问题。我把retrieveFileStream改成了retrieveFile.它不再挂在那里了。

最新更新