`
ehuangmy
  • 浏览: 17351 次
  • 来自: ...
社区版块
存档分类
最新评论

Commons-net FTPClient completePendingCommand()经常使程序死掉的原因分析以及解决方式

 
阅读更多

commons-net的FTPClient,在使用public InputStream retrieveFileStream(String remote)
方法时需要特别注意,在调用这个接口后,一定要手动close掉返回的InputStream,然后再调用completePendingCommand方法,若不是按照这个顺序,则不对,伪代码:
  1. InputStream is = ftpClient.retrieveFileStream(remote);
  2. is.close();
  3. ftpClient.completePendingCommand();
retrieveFileStream的API文档说的有点罗嗦,还可以使用下列方法来替换上述使用方式
使用一个中间文件来做一个转接,这种方式比上述方法的好处就是自己容易控制,不容易出问题。伪代码如下:
  1. File localFile = new File(localPath, localFileName);
  2. OutputStream output = new FileOutputStream(localFile);
  3. ftpClient.retrieveFile(remoteFileName, output);
  4. output.close();
  5. InputStream input = new FileInputStream(localFile);
关于原因这里有比较具体的分析:http://marc.info/?l=jakarta-commons-user&m=110443645016720&w=2
简单来说:completePendingCommand()会一直在等FTP Server返回226 Transfer complete,但是FTP Server只有在接受到InputStream执行close方法时,才会返回。所以先要执行close方法
分享到:
评论

相关推荐

    commons-net-3.8.0-API文档-中文版.zip

    赠送jar包:commons-net-3.8.0.jar; 赠送原API文档:commons-net-3.8.0-javadoc.jar; 赠送源代码:commons-net-3.8.0-sources.jar; 赠送Maven依赖信息文件:commons-net-3.8.0.pom; 包含翻译后的API文档:...

    commons-net-3.1-API文档-中文版.zip

    赠送jar包:commons-net-3.1.jar; 赠送原API文档:commons-net-3.1-javadoc.jar; 赠送源代码:commons-net-3.1-sources.jar; 包含翻译后的API文档:commons-net-3.1-javadoc-API文档-中文(简体)版.zip 对应...

    commons-net-3.6-API文档-中英对照版.zip

    赠送jar包:commons-net-3.6.jar; 赠送原API文档:commons-net-3.6-javadoc.jar; 赠送源代码:commons-net-3.6-sources.jar; 赠送Maven依赖信息文件:commons-net-3.6.pom; 包含翻译后的API文档:commons-...

    commons-net-3.3-API文档-中文版.zip

    赠送jar包:commons-net-3.3.jar; 赠送原API文档:commons-net-3.3-javadoc.jar; 赠送源代码:commons-net-3.3-sources.jar; 赠送Maven依赖信息文件:commons-net-3.3.pom; 包含翻译后的API文档:commons-...

    commons-net-jar包.zip

    这个库的目的是简化Java中的网络编程,使开发者能够快速构建网络应用程序。 2. **FTP支持** 在commons-net-3.3和3.4中,FTP(File Transfer Protocol)的支持是非常全面的。库提供了FTPClient、FTPSSLClient、...

    完美解决:commons-net-1.4.1.jar包中ftp应用的几点问题

    使用commons-net-1.4.1.jar,FTPClient连接成功了,但是ftpClient.listFiles(path).length=0 怎么办? 下载本工具,彻底解决问题。 不要增加类,也不要修改任何代码。 不要犹豫了,干掉commons-net-1.4.1.jar包,用这...

    commons-net-3.6.jar

    例如,可以分析FTPClient如何处理命令响应,如何处理数据连接的建立与关闭,以及错误处理机制等。源码阅读有助于定制化需求,例如添加自定义的日志记录或错误处理策略。 六、FTPServer模拟 Apache Commons Net还...

    commons-net-3.6

    版本3.6包含了丰富的功能和改进,旨在简化和增强Java应用程序的网络编程能力。这个库的核心目标是提供一系列高效、易于使用的类和方法,用于处理各种网络任务。 在提供的压缩包中,我们有三个主要的JAR文件: 1. *...

    commons-net-3.1-API文档-中英对照版.zip

    赠送jar包:commons-net-3.1.jar; 赠送原API文档:commons-net-3.1-javadoc.jar; 赠送源代码:commons-net-3.1-sources.jar; 包含翻译后的API文档:commons-net-3.1-javadoc-API文档-中文(简体)-英语-对照版....

    commons-net-2.2-API文档-中文版.zip

    赠送jar包:commons-net-2.2.jar; 赠送原API文档:commons-net-2.2-javadoc.jar; 赠送源代码:commons-net-2.2-sources.jar; 赠送Maven依赖信息文件:commons-net-2.2.pom; 包含翻译后的API文档:commons-...

    开发工具 commons-fileupload-1.3.2

    开发工具 commons-fileupload-1.3.2开发工具 commons-fileupload-1.3.2开发工具 commons-fileupload-1.3.2开发工具 commons-fileupload-1.3.2开发工具 commons-fileupload-1.3.2开发工具 commons-fileupload-1.3.2...

    commons-net-3.1.jar,3.3,3.6版本

    Apache Commons Net是一个Java库,包含了丰富的网络协议和实用工具,主要专注于TCP/IP通信。这个库在不同的版本中提供了各种功能的增强和优化,比如`commons-net-3.1.jar`, `commons-net-3.3.jar`, 和 `commons-...

    commons-net-3.3-3.4-3.5-3.6.zip

    import org.apache.commons.net.ftp.FTPClient; public class FtpUploader { private FTPClient ftpClient; public boolean connect(String server, int port, String username, String password) { ftpClient ...

    commons-net-ftp-2.0.jar.zip

    Apache Commons Net后续的版本可能已经解决了这些问题,因此在实际项目中,推荐使用最新稳定版的库,以获取最佳的性能和兼容性。 总的来说,Apache Commons Net FTP库是Java开发者处理FTP任务的强大工具,它简化了...

    commons-net-3.8.0-API文档-中英对照版.zip

    赠送jar包:commons-net-3.8.0.jar; 赠送原API文档:commons-net-3.8.0-javadoc.jar; 赠送源代码:commons-net-3.8.0-sources.jar; 赠送Maven依赖信息文件:commons-net-3.8.0.pom; 包含翻译后的API文档:...

    commons-net-3.6 jar包.zip

    本文将深入解析`commons-net-3.6.jar`包,了解其核心功能、使用方法以及在实际开发中的应用。 Apache Commons Net库自1999年以来就一直在为Java开发者提供服务,它的主要目标是提供一套全面且易于使用的API,用于...

    commons-net-3.2.jar

    在本篇文章中,我们将深入探讨"commons-net-3.2.jar"这一版本的功能、特性以及如何在实际项目中应用。 一、概述 Apache Commons Net 3.2是该库的一个稳定版本,它提供了一系列接口和类,以支持各种网络协议的操作...

    commons-net-1.4.1.jar

    该库为Java开发者提供了丰富的API,以便在他们的应用程序中轻松地集成FTP服务。 FTP是互联网上最古老的协议之一,用于在客户端和服务器之间传输文件。Apache Commons Net 1.4.1提供了一个全面的Java实现,支持FTP的...

    commons-net-3.3-API文档-中英对照版.zip

    赠送jar包:commons-net-3.3.jar; 赠送原API文档:commons-net-3.3-javadoc.jar; 赠送源代码:commons-net-3.3-sources.jar; 赠送Maven依赖信息文件:commons-net-3.3.pom; 包含翻译后的API文档:commons-...

Global site tag (gtag.js) - Google Analytics