解决JavaFTP上传文件假死问题

之前使用ftp上传文件,代码很稳定,用了快三年,因为数据迁移,从搭建了ftp服务器,配置好ip和账号密码后,再使用之前代码发现:

在下载过程中,程序出现假死的现象,就是,既不报错,也不抛异常,还不终止,就是一直卡着不动,没法定位问题,自己研究了好长时间,也不知道怎么回事,后来上网又查了查,有人提出了一个方法,真心好用,在这里分享下:

解决方案:

在调用FTPClient.listFiles()或者FTPClient.retrieveFile()方法前,调用FTPClient.enterLocalPassiveMode()!
用人家的原话说,就是“这个方法的意思就是每次数据连接之前,ftp client告诉ftp server开通一个端口来传输数据。”说实话这是什么意思,我这个水平还不是很懂,望大家指教,现把FTP相关代码贴出来,与大家共享。

//创建FTP连接

ftp.setDefaultPort(//FTP端口号);

ftp.connect(//FTP服务IP地址);

ftp.login(//FTP用户名, //密码);

ftp.setBufferSize(1024);

//设置文件类型(二进制)

ftp.setFileType(ftp.BINARY_FILE_TYPE);

//每次数据连接之前,ftp client告诉ftp server开通一个端口来传输数据
// 加入这行代码后,在执行上传或下载文件就没问题了,看来我这个代码还有个隐含bug,尴尬................................

ftp.enterLocalPassiveMode();

posted @   久曲健  阅读(7972)  评论(2编辑  收藏  举报
编辑推荐:
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示