FTPClient storeFile返回false,报550-The process cannot access the file because it is being used by anoth

文章讲述了在使用FTP进行文件上传时遇到线程占用和中文编码问题的解决方案,通过在多线程环境下添加锁并正确处理文件名编码解决了这些问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

boolean tag = ftp.storeFile(fileName, in);

返回false,断点进去看replyString:550-The process cannot access the file because it is being used by another process. 
 Win32 error:   The process cannot access the file because it is being used by another process. 
 Error details: File system returned an error.
550 End

意思是线程被占用,

解决方法,在创建FTP线程的时候加锁

				synchronized(ftpClientPool){
					FTPClient ftpClient = ftpClientPool.createClient();
					boolean success =  upLoadFile(ftpClient,pathName,fileName,insComing);
					if(!success){
						System.out.println("imgUrl=" + js.getString("zytest"));
					}
				}

问题解决

顺便说下,storeFile还有中文编码问题,

fileName = new String(fileName.getBytes("UTF-8"),"iso-8859-1");
boolean tag = ftp.storeFile(fileName, in);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值