当前位置: 首页 > news >正文

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

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

相关文章:

  • mysql数据的导出与导入_浅析MySQL数据的导出与导入知识点
  • Nebula3渲染层: Graphics
  • go分析和kegg分析_一些GO及KEGG分析的知识
  • iPhone对OpenGL ES的支持程度!
  • XACT与X3DAudio整合的问题
  • mysql的分离搭建_MySQL 读写分离环境搭建
  • Thanksgiving!——2008博文视点的光荣归于支持我们的读者、专家们
  • ai文字变成路径_新手必备!AI常用快捷键和一些小技巧
  • 基于wince的网络音视频通信(简单易明版)
  • lvs dr 链接mysql_集群lvs-dr应用之wordpress(共享后台MySQL存储)
  • Nebula3绘制2D纹理
  • python 条件语句知识讲解_Python 知识要点:if 条件语句
  • 完成网络传真,网络扫描。
  • python做爬虫 怎么样效率最高_python如何提升爬虫效率
  • nodejs mysql 框架_nodejs使用Sequelize框架操作数据库
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • [译]Python中的类属性与实例属性的区别
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • CentOS7 安装JDK
  • ES6系统学习----从Apollo Client看解构赋值
  • JavaScript实现分页效果
  • Laravel Mix运行时关于es2015报错解决方案
  • laravel with 查询列表限制条数
  • leetcode98. Validate Binary Search Tree
  • Linux快速复制或删除大量小文件
  • MaxCompute访问TableStore(OTS) 数据
  • React+TypeScript入门
  • SOFAMosn配置模型
  • spark本地环境的搭建到运行第一个spark程序
  • springMvc学习笔记(2)
  • spring学习第二天
  • TCP拥塞控制
  • 成为一名优秀的Developer的书单
  • 从PHP迁移至Golang - 基础篇
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 解决iview多表头动态更改列元素发生的错误
  • 目录与文件属性:编写ls
  • 区块链技术特点之去中心化特性
  • 学习HTTP相关知识笔记
  • 你对linux中grep命令知道多少?
  • 交换综合实验一
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • (2)MFC+openGL单文档框架glFrame
  • (a /b)*c的值
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (C语言)共用体union的用法举例
  • (C语言)球球大作战
  • (LeetCode 49)Anagrams
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (六)Hibernate的二级缓存