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

commons-net的FTPClient,在使用public InputStream retrieveFileStream(String remote)

方法时需要特别注意,在调用这个接口后,一定要手动close掉返回的InputStream,然后再调用completePendingCommand方法,若不是按照这个顺序,则不对,伪代码:

  1. InputStream is = ftpClient.retrieveFileStream(remote);is.close();ftpClient.completePendingCommand();

retrieveFileStream的API文档说的有点罗嗦,还可以使用下列方法来替换上述使用方式

使用一个中间文件来做一个转接,这种方式比上述方法的好处就是自己容易控制,不容易出问题。伪代码如下:

  1. 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方法

清风一池水

关注

  • 1

  • 0

  • 5

专栏目录

FTPClient使completePendingCommand方法时之踩坑

小郝哥的博客

1703

FTPClient使completePendingCommand方法之坑 现象:completePendingCommand方法假,导致请求一直没有返回参数,最终导致超时 使用过程:在使FTPClient**的时候,用到了ftpClient.retrieveFileStream*(fileName)方法,一切正常的*话,会返回文件流inputStream, complete**PendingComma…

FTPClient

树洞树洞-单纯记录

1595

扫描ftp目录判断文件是否存在 import java.io.IOException; import java.io.InputStream; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPClientConfig; public class Test { pub…

评论

写评论

Commons*-net* FTPClient *completePendingCommand(**)*经常

6-10

简单来说:completePendingCommand*(**)*会一直在等FTP Server返回226 Transfer complete,但是FTP Server只有在接受到InputStream执行close方法时,才会返回。所以先要执行close方法 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wangjian…

java apache commons net_java – apache commons netcompletependingcommand返回false

weixin_32452447的博客

126

我正在使用apache commons网络库从FTP服务器获取文件.我不需要下载整个文件,只是为了读取标题来确定文件大小.我用来做这个库是metadata extractor问题是,当我调用client.completePendingCommand(**)时,它总是返回false – 但是日期变量是正确打印.我问过元数据提取器开发人员,他不知道为什么返回false.有人有解释吗?我不确定是否可以…

使用Apache Commons Net API实现FTP上传下载过程中坑点

黄刚的技术博客

1万+

最近项目需要实现FTP上传、下载功能,采用了Apache Commons Net API。代码很快就完成了,但由于对相关API**使用场景不是很熟悉,走了一些弯路,抽一点时间做一下总结。 A)主动被动模式选择:FTP主动模式和被动模式详细介绍可以参考(http://blog.csdn.net/huanggang028/article/details/41248663)。大概意思就是主动模式是客户端

ftp下载完成后卡在ftpClient.completePendingCommand*(**)*;

weixin_39654286的博客

6373

下载完成后,若有 boolean upNewStatus = ftpClient.completePendingCommand(**);,到此会停住不往下执行,必须重启,否则不会往下执行 * There are a few FTPClient methods that do not complete the * entire sequence of FTP commands to…

FTPClient 处理多个文件时注意添加completePendingCommand
热门推荐

憨厚博客

1万+

//楼主之前做一个项目对接,要求用到操作ftp文件等功能,主要遇到问题是当要遍历文件夹里文件时或者下载所有文件时,如果没有使completePendingCommand(**)这方//法,则只能处理一个文件,在处理第二个文件时候(即第二次调用retrieveFileStream*()方法时候)返回null。//所以处理第二个文件前,必须使completePendingCommand**()*方法

ftp的**completePendingCommand方法
最新发布

weixin_38972910的博客

387

该方法 ftpClient.completePendingCommand(**); 不可多加或者漏加,否则会导致程序

commons*-*net FTPClient API存取设计

狂奔 Lion

68

文件系统无非就是文件存取和组织结构。 访问一个文件系统的**API也应该是写,读,定位方法(Pathname?/URI?) FTPClient针对文件保存和获取各提供了两个方法,分别是: [code=”java”]public boolean storeFile*(String remote, InputStream local)* public OutputStream storeFil…

FTPClient使completePendingCommand方法注意事项

727

方法介绍: * There are a few FTPClient methods that do not complete the * entire sequence of FTP commands to complete a transaction. These * commands require some action by the pro…

Linux下不同服务器间数据传输

weixin_33739541的博客

148

因为工作原因,需要经常在不同服务器见进行文件传输,特别是大文件传输,因此对linux下不同服务器间数据传输命令和工具进行了研究和总结。主要是rcp,scp,rsync,ftp,sftp,lftp,wget,curl。 rcprcp不是一种安全的**的传输文件的**方式,rcp通过rsh(rsh见下面)来执行远程命令,要使用rcp必须经过一些配置,现在rcp已经被scp取代了,常用scp来进行文件传输。…

使用apache commons 2.0 net组件开发ftp上传大文件使**程序

软件开发随记

234

最近使用apache上面的**commons 2.0开发ftp使用过程中,因为涉及到大文件长时间传输,在最后经常导致程序**死掉,不知道大家有没有办法解决。 其中传文件代码如下: [code=”java”]/** * 上传文件到服务器,新上传和断点续传 * @param remoteFile 远程文件名,在上传之前已经将服务器工作目录做了改变 * @par…

commons netFTPClient使用时一些小问题

iteye_18961的博客

570

原始发表时间:2009*-08-20       FTPClient上传文件时,必须先关闭在服务器上打开输出流对象,而后再等待命令结束后登出,否则会丢失文件最后部分。     另外,想避免乱码,得用FTPClient* setControlEncoding 方法来设置编码,不过这仅仅是针对文件内容而言,传输文件名称如果有中文话,还是得进行转码。     下面黑体字 标识了…

关于FTP程序接收文件问题

buliedian

77

写有一个ftp值守程序,收取FTP目录中文件。 发现一个很怪问题:总是接收失败。从服务器发送字节数看。1440和2880长度是常见。我令文件长度恰好是1440或者2880整数倍,均是失败多。后不断调试发现。当文件体积是1440或者2880加上1440一半稍多时。文件体积恰好。每次命令发出,都能一次成功接收。比如我现在用文件体积是2880+1440/2+10=3610,测试良…

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

清风一池水

码龄18年 暂无认证

191
原创

6万+
周排名

173万+
总排名

97万+

访问

等级

1万+

积分

457

粉丝

51

获赞

114

评论

46

收藏

私信

关注

热门文章

分类专栏

最新评论

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐

最新文章

2022年2篇

2016年2篇

2014年3篇

2013年4篇

2012年2篇

2011年8篇

2010年7篇

2009年14篇

2008年16篇

2007年47篇

2006年82篇

2005年1篇

2004年16篇

举报

×

拖拽到此处

图片将完成下载