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

2024年上市公司ESG评级全解析:六大权威数据源横向对比与应用指南 本文深度解析2024年国内主流ESG评级数据源,包括华证、商道融绿、Wind、富时罗素和彭博,横向对比其覆盖范围、评分逻辑与应用侧重点。文章提供实战指南,帮助投资者与企业根据投资决策、风险管理和学术研究等不同场景,精准选择并有效应用ESG数据,实现从概念到实用分析工具的转变。 阅读详情
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方法
使用手机录制rosbag包 使用手机作为便携式数据采集设备来录制rosbag。 阅读详情

相关推荐

飞秒激光加工石英玻璃的COMSOL多物理场仿真研究

多物理场仿真是现代工程研发的重要工具,通过耦合电磁、热传导和流体力学等物理场,可以准确预测复杂工况下的材料行为。COMSOL Multiphysics作为主流仿真平台,其双温模型能精确描述飞秒激光加工中的电子-声子耦合过程。这种仿真技术可显著降低实验成本,在微纳加工领域尤为关键。针对石英玻璃这类光学材料,仿真能有效优化激光参数,实现亚微米级精度的冷加工。研究显示,结合移动网格技术和自定义材料状态函数,可以准确预测烧蚀形貌与热影响区分布,为光学器件和微流控芯片制造提供可靠工艺指导。

weixin_29290863的博客 240

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

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

weixin_39654286的博客 8823

Zemax:初学者的混合模式

光线以序列模式开始,然后接近非序列组件的入口端口。到达入口端口后,光线以非序列模式传播,然后接近出口端口。光线离开出口端口后,我们又回到序列模式。在此博客中,使用混合模式的示例将演示根据您自己的需要复制此工作流程所需的基本设置,以及一些有用的技巧。非序列组件表面类型必须在序列模式和非序列模式下定义。为了定义非序列组件的几何形状,请转到设置->编辑器->非序列,单击非序列编辑器。一旦我们进入非序列组件编辑器:表面 2 上的组件组,找到一个对象类型并进行定义。它能让您兼具序列模式的精确性和非序列模式的灵活性。

jkh920184196的博客 1340

ftp的completePendingCommand方法

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

weixin_38972910的博客 1625

水文模型新手必看:用SWAT-CUP做参数率定,如何正确设置预热期、率定期和验证期?(附数据准备避坑指南)

本文详细介绍了使用SWAT-CUP进行水文模型参数率定的完整流程,重点解析了预热期、率定期和验证期的正确设置方法,并提供了数据准备的避坑指南。通过实操步骤和常见问题解决方案,帮助新手快速掌握SWAT-CUP参数率定的核心技巧,提升水文模型模拟精度。

weixin_26875109的博客 374

手把手教你打造CTF动态靶场

公司想搞一个CTF比赛,需要一个竞赛靶场,于是这个任务就落在了我的身上,平台是利用CTFd框架,基于docker搭建的动态靶场,搭建过程中遇到的坑比较多,这里我会把每一个遇到的坑都指出来。我搭建的是CTFd的3.X的版本。第一次搭建的话,搭建的过程会有些痛苦,但是搭建完成后会越来越熟练,这个平台的可用性还是很高的。由于搭建的过程中遇到的坑太多了,各种各样的问题,所以决定写下这篇文章,把所有的坑都指出来,也算为后边想搭这个平台的小伙伴指一条路。Taps:资源来源:星海安全实验室如果你也对网络安全&黑客。

Python栈 4934

06 retrieveFileStream 之后需要调用 completePendingCommand 否则业务代码会存在问题

问题是这样的之前 同事碰到了这样的一个问题, 说是基于 ftp 客户端更新文件名字 更新失败然后 看了一下, 原来是 调用了 retrieveFileStream, 然后 没有同步等待 数据传输完成, 然后 之后直接调用了 rename 的方法然后 发现 rename 返回的是 false, 并且 文件名称也没有更新然后 这里 我们就来看一下 这个问题的相关细节。

970655147的专栏 1851

手把手教你用Python处理MAHNOB-HCI多模态数据集(含脑电EEG/眼动/视频数据同步实战)

本文详细介绍了如何使用Python处理MAHNOB-HCI多模态数据集,涵盖脑电(EEG)、眼动追踪和视频数据的同步解析与对齐。通过MNE-Python、pandas和OpenCV等工具,实现从BDF、TSV到XML格式的高效处理,解决时间轴对齐难题,助力情感计算与人机交互研究。

weixin_30998797的博客 369

ftpClient.completePendingCommand()的坑

注:之前看过别的文章说,导致ftpClient.retrieveFileStream()卡死,是因为没有关闭inputstream会话,但是此时inputstream是null,调用inputstream.close()方法会直接报空指针错误的。ftpClient.completePendingCommand()方法通常用于在执行某些 FTP 操作后,确保相关命令完成并清理服务器端的状态,例如在执行上传或下载命令后调用,以确保命令已成功完成并且没有挂起的操作。

m0_61844754的博客 971

实现画布拖拽算子排布,通过flink实现算子编排计算,如何实现?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1072

100天精通Python(基础篇)——第4天:数据类型全解析_从基础到转换

数据类型全解析_从基础到转换

努力让自己发光,对的人才能迎着光而来 11万+

java ftp api_commons-net FTPClient API存取设计

文件系统无非就是文件的存取和组织结构。访问一个文件系统的API也应该是写,读,定位方法(Pathname?/URI?)FTPClient针对文件的保存和获取各提供了两个方法,分别是:publicbooleanstoreFile(Stringremote,InputStreamlocal)publicOutputStreamstoreFileStream(Stringremote)publ...

weixin_39899226的博客 331

osg中显示3dtiles和cesiumIon

如下图为CesiumTilesetNode数据更新相关代码,将OSG对应的ViewMatrix、ProjectionMatrix和窗口信息传递给tileset->updateView()实现Cesium-native的场景更新。整体结构,其中 CesiumTilesetNode依赖Cesium3DTilesSelection::Tileset,实现数据的更新以及确定需要绘制的节点。1.1 CesiumNative3DTileslayer图层。

CPWWHSU的博客 889

FTPClient

扫描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...

树洞树洞-单纯记录 2988

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Java org.apache.commons.net.ftp.FTPClient文件下载的坑

FTPClient调用retrieveFileStream获取InputStream流后,除了必须关闭InputStream,还要。方法才能继续使用FTPClient。

javkhuang的博客 721

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

java apache commons net_java – apache commons net – completependingcommand返回false

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

weixin_30550287的博客 121

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

FTPClient中 retrieveFileStream 的用法

工作需要使用了org.apache.commons.net.ftp.FTPClient来操作FTP,记录一下心得。 这个类封装的很完善,使用起来也很简单,只是在使用retrieveFileStream的时候碰到了一点小问题,就是不知道怎么完成传输状态,尝试发送abor指令也不行。在咨询了bianbian和查看了源代码之后看到这一段说明以后解决问题: /* * You...

weixin_30739595的博客 391

commons-net FTPClient API存取设计

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

i_lovefish的专栏 1602

retrievefile java_FTPClient中 retrieveFileStream 的用法

工作需要使用了org.apache.commons.net.ftp.FTPClient来操作FTP,记录一下心得。这个类封装的很完善,使用起来也很简单,只是在使用retrieveFileStream的时候碰到了一点小问题,就是不知道怎么完成传输状态,尝试发送abor指令也不行。在咨询了bianbian和查看了源代码之后看到这一段说明以后解决问题:/** You must close the Inp...

weixin_42499379的博客 1840

使用Apache Common Net包上传文件FTPClient.storeFileStream二次返回null

在使用Apache Commom Net的FTP包上传文件时,发现如果传两个文件以上时,第一个文件传成功,但是第二个文件时,执行到 outputStream = ftpClient.storeFileStream(localFile.getName()); 这行代码时,outputStrem是null,在外国一个论坛上找到比较细致的解决方案,一定要在finally里执行 ftpClient.completePendingCommand(); 这段代码才行,最后贴出代码方便查阅 public

雪飘碧鸳的博客 1935
上一篇: Java文件读写数据流大全(InputStream、OutputStream、FileInpuStream)
下一篇: apache fip 工具类
lb8607
博客等级 码龄18年 17粉丝 18原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值