commons-net的FTPClient,在使用public InputStream retrieveFileStream(String remote)
方法时需要特别注意,在调用这个接口后,一定要手动close掉返回的InputStream,然后再调用completePendingCommand方法,若不是按照这个顺序,则不对,伪代码:
InputStream is = ftpClient.retrieveFileStream(remote);
is.close();
ftpClient.completePendingCommand();
retrieveFileStream的API文档说的有点罗嗦,还可以使用下列方法来替换上述使用方式
使用一个中间文件来做一个转接,这种方式比上述方法的好处就是自己容易控制,不容易出问题。伪代码如下:
File localFile = new File(localPath, localFileName);
OutputStream output = new FileOutputStream(localFile);
ftpClient.retrieveFile(remoteFileName, output);
output.close();
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方法
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wangjian5748/archive/2008/11/28/3404619.aspx
分享到:
相关推荐
赠送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文档:...
赠送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 对应...
赠送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-...
赠送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-...
这个库的目的是简化Java中的网络编程,使开发者能够快速构建网络应用程序。 2. **FTP支持** 在commons-net-3.3和3.4中,FTP(File Transfer Protocol)的支持是非常全面的。库提供了FTPClient、FTPSSLClient、...
使用commons-net-1.4.1.jar,FTPClient连接成功了,但是ftpClient.listFiles(path).length=0 怎么办? 下载本工具,彻底解决问题。 不要增加类,也不要修改任何代码。 不要犹豫了,干掉commons-net-1.4.1.jar包,用这...
例如,可以分析FTPClient如何处理命令响应,如何处理数据连接的建立与关闭,以及错误处理机制等。源码阅读有助于定制化需求,例如添加自定义的日志记录或错误处理策略。 六、FTPServer模拟 Apache Commons Net还...
版本3.6包含了丰富的功能和改进,旨在简化和增强Java应用程序的网络编程能力。这个库的核心目标是提供一系列高效、易于使用的类和方法,用于处理各种网络任务。 在提供的压缩包中,我们有三个主要的JAR文件: 1. *...
赠送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文档-中文(简体)-英语-对照版....
赠送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...
Apache Commons Net是一个Java库,包含了丰富的网络协议和实用工具,主要专注于TCP/IP通信。这个库在不同的版本中提供了各种功能的增强和优化,比如`commons-net-3.1.jar`, `commons-net-3.3.jar`, 和 `commons-...
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 ...
Apache Commons Net后续的版本可能已经解决了这些问题,因此在实际项目中,推荐使用最新稳定版的库,以获取最佳的性能和兼容性。 总的来说,Apache Commons Net FTP库是Java开发者处理FTP任务的强大工具,它简化了...
赠送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`包,了解其核心功能、使用方法以及在实际开发中的应用。 Apache Commons Net库自1999年以来就一直在为Java开发者提供服务,它的主要目标是提供一套全面且易于使用的API,用于...
该库为Java开发者提供了丰富的API,以便在他们的应用程序中轻松地集成FTP服务。 FTP是互联网上最古老的协议之一,用于在客户端和服务器之间传输文件。Apache Commons Net 1.4.1提供了一个全面的Java实现,支持FTP的...
赠送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-...
在这个3.3版本的jar包中,开发者可以找到一系列强大的工具,简化了在Java应用程序中进行FTP交互的过程。下面我们将深入探讨这个库的主要特性和使用方法。 一、Apache Commons Net概述 Apache Commons Net提供了丰富...